1.数据保存为TXT

打开Pipeline.py

  1. import codecs
  2. import os
  3. import json
  4. import pymysql
  5.  
  6. class CoolscrapyPipeline(object):#需要在setting.py里设置'coolscrapy.piplines.CoolscrapyPipeline':300
  7. def process_item(self, item, spider):
  8. # 获取当前工作目录
  9. base_dir = os.getcwd()
  10. fiename = base_dir + '/news.txt'
  11. # 从内存以追加的方式打开文件,并写入对应的数据
  12. with open(fiename, 'a') as f:
  13. f.write(item['title'] + '\n')
  14. f.write(item['link'] + '\n')
  15. f.write(item['posttime'] + '\n\n')
  16. return item

2.保存为json格式

在Pipeline.py里面新建一个类

  1. #以下两种写法保存json格式,需要在settings里面设置'coolscrapy.pipelines.JsonPipeline': 200
  2.  
  3. class JsonPipeline(object):
  4. def __init__(self):
  5. self.file = codecs.open('logs.json', 'w', encoding='utf-8')
  6. def process_item(self, item, spider):
  7. line = json.dumps(dict(item), ensure_ascii=False) + "\n"
  8. self.file.write(line)
  9. return item
  10. def spider_closed(self, spider):
  11. self.file.close()
  12.  
  13. class JsonPipeline(object):
  14. def process_item(self, item, spider):
  15. base_dir = os.getcwd()
  16. filename = base_dir + '/news.json'
  17. # 打开json文件,向里面以dumps的方式吸入数据
  18. # 注意需要有一个参数ensure_ascii=False ,不然数据会直接为utf编码的方式存入比如
  19. # :“/xe15”
  20. with codecs.open(filename, 'a') as f:
  21. line = json.dumps(dict(item), ensure_ascii=False) + '\n'
  22. f.write(line)
  23. return item

上面是两种写法,都是一样的

3.保存到mysql

在Pipeline.py里面新建一个类

  1. import json,pymysql
  2. class TianyaBbsPipeline(object):
  3. def open_spider(self,spider):
  4. self.conn=pymysql.Connect(host='localhost',db='books',user='book',port=3306,passwd='1q2w3e4r5t',charset='utf8')#连接数据库
  5. self.course=self.conn.cursor(cursor=pymysql.cursors.DictCursor)#创建游标
  6. sql="create database if not exists tianya character set utf8"#创建一个数据库(判断是否存在,不存在就创建,存在就不创建)
  7. self.course.execute(sql)#执行sql
  8. sql='''Create Table If Not Exists tianya.guihua (
  9. id Bigint(8) unsigned Primary key Auto_Increment,
  10. thTime DateTime,
  11. title varchar(50),
  12. auth varchar(50),
  13. content text(50)
  14. ) Engine InnoDB'''#创建表(存在就不创建,不存在就创建)
  15. self.course.execute(sql)
  16.  
  17. def process_item(self, item, spider):
  18. if isinstance(item,TianyaBbsItem):
  19. if item['bbs_title']==None or item['auth_name']==None or item['content']==None:
  20. return item
  21. sql='insert into tianya.guihua (title,auth,content)values(%s,%s,%s)'
  22. self.course.execute(sql,(item['bbs_title'],item['auth_name'],item['content']))
  23. self.conn.commit()
  24. return item
  25. def close_spider(self,spider):
  26. self.course.close()
  27. self.conn.close()

编写Settings.py

我们需要在Settings.py将我们写好的PIPELINE添加进去,
scrapy才能够跑起来
这里只需要增加一个dict格式的ITEM_PIPELINES,
数字value可以自定义,数字越小的优先处理

  1. 1 ITEM_PIPELINES={'coolscrapy.pipelines.CoolscrapyPipeline':300,
  2. 2 'coolscrapy.pipelines.JsonPipeline': 200,
  3. 3 'coolscrapy.pipelines.TianyaBbsPipeline': 100,
  4. 4 }

scrapy爬虫保存数据的更多相关文章

  1. Scrapy爬虫案例 | 数据存储至MySQL

    首先,MySQL创建好数据库和表 然后编写各个模块 item.py import scrapy class JianliItem(scrapy.Item): name = scrapy.Field() ...

  2. Scrapy爬虫案例 | 数据存储至MongoDB

    豆瓣电影TOP 250网址 要求: 1.爬取豆瓣top 250电影名字.演员列表.评分和简介 2.设置随机UserAgent和Proxy 3.爬取到的数据保存到MongoDB数据库  items.py ...

  3. 42.scrapy爬取数据入库mongodb

    scrapy爬虫采集数据存入mongodb采集效果如图: 1.首先开启服务切换到mongodb的bin目录下 命令:mongod --dbpath e:\data\db 另开黑窗口 命令:mongo. ...

  4. scrapy爬虫案例:用MongoDB保存数据

    用Pymongo保存数据 爬取豆瓣电影top250movie.douban.com/top250的电影数据,并保存在MongoDB中. items.py class DoubanspiderItem( ...

  5. python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题

    爬取的数据结果是没有错的,但是在保存数据的时候出错了,出现重复数据或者数据少问题.那为什么会造成这种结果呢? 其原因是由于Spider的速率比较快,而scapy操作数据库操作比较慢,导致pipelin ...

  6. scrapy爬取数据保存csv、mysql、mongodb、json

    目录 前言 Items Pipelines 前言 用Scrapy进行数据的保存进行一个常用的方法进行解析 Items item 是我们保存数据的容器,其类似于 python 中的字典.使用 item ...

  7. 分布式爬虫:使用Scrapy抓取数据

    分布式爬虫:使用Scrapy抓取数据 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘. ...

  8. 第三百五十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection)

    第三百五十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection) Scrapy提供了方便的收集数据的机制.数据以key/value方式存储,值大多是计数 ...

  9. Scrapy爬虫入门系列3 将抓取到的数据存入数据库与验证数据有效性

    抓取到的item 会被发送到Item Pipeline进行处理 Item Pipeline常用于 cleansing HTML data validating scraped data (checki ...

随机推荐

  1. JS笔记之第二天

    一元运算符:++  -- 分为前++和后++ and 前--和后-- 如果++在后面,如:num++ +10参与运算,先参与运算,自身再加1 如果++在前面,如:++num+10参与运算,先自身加1, ...

  2. 理解一致性Hash算法

    简介 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CAR ...

  3. MongoDB3.4版本新增特性

    先说明一下mongod和mongos的含义:mongod是MongoDB系统的主要后台进程,它处理数据请求.管理数据访问和执行后台管理操作:该命令的命令行选项主要用于测试,在场景操作中,使用配置文件选 ...

  4. JavaScript使用MQTT

    1.MQTT Server使用EMQTTD开源库,自行安装配置: 2.JS使用Websocket连接通信. 3.JS的MQTT库为paho-mqtt,git地址:https://github.com/ ...

  5. rxjs简单的Observable用例

    import React from 'react'; import { Observable } from 'rxjs'; const FlowPage = () => { const onSu ...

  6. Python3标准库:bisect维护有序列表

    1. bisect维护有序列表 bisect模块实现了一个算法来向列表中插入元素,同时仍保持列表有序. 1.1 有序插入 下面给出一个简单的例子,这里使用insort()按有序顺序向一个列表中插入元素 ...

  7. 源码编译安装python2/3版本

    1- 源码编译安装python2.7版本 1.1- 下载源码包 wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz 1.2- ...

  8. opencv —— morphologyEx 开运算、闭运算、形态学梯度、顶帽、黑帽

    开运算:先腐蚀后膨胀. 能够排除小亮点. 闭运算:先膨胀后腐蚀. 能够排除小黑点. 形态学梯度:膨胀图 — 腐蚀图. 对二值图像进行这一操作,可将图块的边缘突出出来,故可用来保留物体边缘轮廓. 顶帽: ...

  9. 图片上传的进度条-jquery

    <div style="padding: 10px;"> <div class="progress-bar" style="disp ...

  10. 在服务器上安装并配置JDK1.8

    参考链接:https://blog.csdn.net/qq_40958000/article/details/83996912