投稿    登录
  博主录制的Python3爬虫视频教程已发布!详情请戳Python3爬虫视频教程!希望大家支持!非常感谢!

小白进阶之Scrapy第一篇

Python 哎哟卧槽 60182浏览 107评论

我现在教教大家怎么处理这些数据:对头就是说说Pipeline了:

 

对于基本的Pipeline存储方式,网上有很多教程了,今天我们做一个自定义的MySQL的Pipeline:

首先为了能好区分框架自带的Pipeline,我们把MySQL的Pipeline单独放到一个目录里面。

Scrapy12

我们在项目中新建了一个mysqlpipelines的文件夹,我们所有的MySQL文件都放在这个目录。

init.py 这个文件不需要我说了吧,不知道做啥的小哥儿自己百度。

pipelines.py  这个是我们写存放数据的文件

sql.py 看名字就知道,需要的sql语句。

首先是需要的MySQL表,(MySQL都没有的小哥儿 自己百度装一个啊,我就不教了)

首先我们再settings.py文件中定义好MySQL的配置文件(当然你也可以直接定义在sql.py文件中):

MySQL setting

PS :注意MySQL的默认端口是 3306;我自己的MySQL改成了3389。这儿各位酌情自己更改。

在开始写sql.py之前,我们需要安装一个Python操作MySQL的包,来自MySQL官方的一个包:点我下载

下载完成后解压出来,从CMD进入该目录的绝对路径,然后 Python  setup.py install ;即可完成安装

下面是我们的sql.py文件:

sql01

第一行至第二行分别导入了:我的MySQL操作包,settings配置文件

第四行至第八行 : 从settings配置文件中获取到了,我们的MySQL配置文件

第十行至第十一行: 初始化了一个MySQL的操作游标

第十三行: 定义了一个Sql的类

第十六行至第二十五行:定义了一个函数,将函数中的四个变量写入数据库(这四个变量就是我们后面传进来的需要存储的数据。)

关于@classmethod这个是一个修饰符;作用是我们不需要初始化类就可以直接调用类中的函数使用(具体说起来麻烦,知道作用就好啦)

好了第一部分写完了,我们还需要一个能够去重的:

sql01

这一段代码会查找name_id这个字段,如果存在则会返回 1 不存在则会返回0

 

 

Nice!sqi.py这一部分我们完成,来开始写pipeline吧:

pipeline02

第一行至第二行:我们导入了之前编写的sql.py中的Sql类,和我们建立的item

第六行:建立了一个DingdianPipeline的类(别忘了一定要继承object这个类啊,这是做啥的不用多了解,说多了你们头晕,我也懒)

第八行:我们定义了一个process_item函数并有,item和spider这两个参数(请注意啊!这两玩意儿 务必!!!要加上!!千万不能少!!!!务必!!!务必!!!)

第十行:你这样理解如果在 item中存在DingdianItem;就执行下面的。

第十一行:从item中取出 name_id的值。

第十二行:调用Sql中的select_name函数获得返回值

第十三行:判断ret是否等于1 ,是的话证明已经存了

第二十行:调用Sql中的 insert_dd_name函数,存储上面几个值。

搞完!下面我们启用这个Pipeline在settings中作如下设置:

setting02

PS: dingdian(项目目录).mysqlpipelines(自己建立的MySQL目录).pipelines(自己建立的pipelines文件).DingdianPipeline(其中定义的类) 后面的 1 是优先级程度(1-1000随意设置,数值越低,组件的优先级越高)

好!我们来运行一下试试!!Go Go Go!

scrapy15

Nice!!完美!!我之前运行过了 所以提示已经存在。

scrapy17

转载请注明:静觅 » 小白进阶之Scrapy第一篇

喜欢 (90)or分享 (0)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

想找人聊天解闷?想要学习干货?

微信公众号进击的Coder为你打造

进击的Coder

微信公众号 扫一扫关注