首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

scrapy-redis快速上手

作者的话

对Python爬虫如何实现大批量爬取感兴趣的读者可以看下scrapy爬虫框架,并且使用本文的scrapy-redis将你的爬虫升级为分布式爬虫。

前言

阅读本文章,您需要:

了解scrapy爬虫框架,知道scrapy的基本使用,最好已经有了可以单机运行的scrapy爬虫。

了解scrapy-redis可以用来干嘛。

已经尝试了一些反反爬措施后仍然觉得爬取效率太低。

已经看了无数scrapy-redis文章,却和我一样不得要领。(自己太笨)

已经看了无数scrapy-redis文章,被辣鸡文章坑的生活不能自理,到现在还没配置好。(可能还是自己太笨)

提示:本文为快速上手文章,有些操作的具体步骤不详细讲,自行百度通用解法,省略的部分我认为你可以自行解决,如果遇到问题,请留言提问

使用scrapy-redis将scrapy改造为分布式

安装需要的python库和数据库

安装scrapy-redis:pip install scrapy-redis

安装redis:可以仅在master(主)端安装

安装其他数据库(可选):mysql,mangoDB,用来保存大量数据,当然也可以选择不安装。用其他方法处理数据。

提示:请注意版本问题,不要过低。

配置redis

master(主)上的redis安装后,需要做以下几件事:

配置redis.conf设置从外网访问:#bind 127.0.0.1

最好设置个密码

取消保护模式 protected-mode no

master启动redis,使用./redis-serverredis.conf(改为你的设置文件所在位置)

尝试从slave(从)连接master的redis,连接成功(盗的图):

image

修改scrapy:setting.py

添加如下代码:

对于itempipeline:你以前怎么存的数据还是怎么存,当然你也可以用redis先存,之后再一起转移出来。像我就直接存到mysql了

修改scrapy:spiders/xxxxx.py(自己命名的爬虫文件)

将继承改为继承Redisspider

修改slave的存储数据库设置(可选)

如果你想要让slave抓取到的数据直接存入master的数据库,您别忘了修改slave的数据库连接设置

启动分布式爬虫

启动master:scrapy crawl xxxxx

启动slave: crawl xxxxx

image2

上传了个demo源码,供大家修改使用:

https://github.com/qqxx6661/scrapy_redis_demo

参考

https://www.cnblogs.com/zjl6/p/6742673.html

scrapy-redis官方文档

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181211G1N7F500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券