分布式爬虫(四):大结局
分布式爬虫之大结局篇:基于之前三篇博客配置的环境,缺一不可,若是漏了哪一步安装步骤,则可能存在运行报错问题。话不多说,抓紧时间结束这最后的分布式爬虫挣扎。
操作环境: Windows10、Python3.6、Pycharm2019.3.1、VMware15、Xshell6
相关文章: 分布式爬虫(一):配置虚拟机
分布式爬虫(二):配置安装Python以及redis
分布式爬虫(三):scrapy之中国网库
目录
- 一、scrapy-redis
- 1.1、简介
- 1.2、修改scrapy
- 1.3、模块迁移
- 二、virtualenv虚拟环境
- 2.1、连接Xshell6
- 2.2、安装virtualenv
- 三、运行分布式项目
- 四、项目总结
一、scrapy-redis
1.1、简介
scrapy-redis是一个基于redis的scrapy组件,主要用于快速实现scrapy框架爬虫项目的分布式部署以及数据的采集,其原理如下图:
scrapy-redis分布式爬取时启动多个服务端共享同一个redis队列的爬虫实例,多个爬虫实例将各自运行提取到或已请求的Requests在队列中统一进行登记,使得Scheduler在请求调度时能够对重复Requests进行过滤筛选,即保证已经由某一台爬虫实例请求过的Requests将不会再被其他爬虫实例重复请求。
scrapy-redis爬虫实例以上一篇博客的中国网库为例,对商品数据进行数据采集。
安装scrapy-redis
pip install scrapy-redis
1.2、修改scrapy
要将一个Scrapy项目变成一个Scrapy-redis项目只需修改以下三点即可:
1、将scrapy项目的爬虫文件spider_library.py中爬虫的类从scrapy.Spider变成scrapy_redis.spiders.RedisSpider;(或者是从scrapy.CrawlSpider变成scrapy_redis.spiders.RedisCrawlSpider。)
2、将爬虫文件spider_library.py中的start_urls删掉,增加一个redis_key=“xxx”。这个redis_key是为了以后在redis中控制爬虫启动的。爬虫项目的第一个url,就是在redis中通过这个发送出去的
3、在配置文件settings.py中添加如下配置:
# Scrapy-Redis相关配置
# 确保request存储到redis中
SCHEDULER = "scrapy_redis.scheduler.Scheduler" # #指定队列# 确保所有爬虫共享相同去的去重指纹
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter' # #定义一个去重的类SCHEDULER_QUEUECLASS = 'scrapy_redis.queue.SpiderQueue'# 在redis中保持scrapy-redis用到的队列,不会清理redis中的队列,从而可以实现暂停和恢复的功能
SCHEDULER_PERSIST = True# 设置连接redis信息
REDIS_HOST = '192.168.2.133' # 指定ip
REDIS_PORT = '6379' # 端口号
1.3、模块迁移
本次分布式爬虫项目小编打算使用一个本机Windows10系统 + 虚拟机Linux系统,所以爬虫项目文件代码已在windows10系统下写完,其项目所用到的模块也安装完全;若将此项目文件放到Linux系统中则无此项目所用到的模块。
所以我们得使用命令pip freeze > requirements.txt将爬虫项目用到的模块迁移到requirements.txt文件中,以便Linux系统下载。
第一步:cd切换到爬虫项目第一层文件名下;
第二步:输入命令pip freeze > requirements.txt;或者Python -m pip freeze > requirements.txt即可。
如图所示:
二、virtualenv虚拟环境
virtualenv优势:用来为一个应用创建一套“隔离”的Python运行环境,另外上线流程简单,大大减轻运维人员的出错率,比如每一个项目使用一个docker镜像,在镜像中去安装项目所需的环境,库版本等等。
2.1、连接Xshell6
打开VMware15软件,运行指定虚拟机,使用Xshell6软件连接虚拟机,查看是否连接成功:
2.2、安装virtualenv
安装步骤:
1.安装虚拟环境
pip3 install virtualenv
2.添加环境变量(否则创建虚拟环境的时候会出现:virtualenv 未找到命令。)
(1)使用查找find / -name ‘virtualenv.py’ 是否存在
(2)vi编辑文件/etc/profile;将内容PATH=$PATH:/usr/local/python3/bin写入文件最下面;Esc+;+Shift三键一起按,输入wq!(强制保存退出)。
vi /etc/profile
(3)添加的进行生效命令source /etc/profile,最后查看是否添加成功echo $PATH
3.创建虚拟环境spider:virtualenv -p python3 虚拟环境名
virtualenv -p python3 spider
4.激活虚拟环境spider:source “虚拟环境名”/bin/activate
source spider/bin/activate
激活后,在控制台会有一个带有(spider)的标志,如下:
三、运行分布式项目
至此,分布式爬虫项目需要用到的虚拟环境配置完成。
接下来执行爬虫项目步骤:
1、开启redis服务(注:cd切换到redis目录下)
Windows系统下:redis-server.exe redis.windows.conf
Linux系统下:redis-server
连接redis数据库:redis-cli —> 连接本机
redis-cli -h 192.168.2.133 -p 6379 —> 访问远程redis
2、使用rz命令上传分布式爬虫项目文件压缩包。(注:若无此命令,即用yum install lrzsz下载插件)
3、解压文件:China_library_reids.zip
unzip China_library_reids.zip
4、下载之前迁移的项目库(requirements.txt)
pip3 install -r requirements.txt
5、运行爬虫文件
(1)、在爬虫服务器上,进入到爬虫文件所在的路径,然后输入命令:scrapy runspider [爬虫文件名]
scrapy runspider spider_library
进入等待传输开始爬取的url:
(2)、在Redis服务器上,输入一个开始的url链接:
lpush spider_library:start_urls http://www.99114.com/
6、双系统运行分布式爬虫项目,执行半小时:
查看数据量:25601条数据。
四、项目总结
分布式爬虫项目带给目标网址的压力还是有的,刚刚持续爬了一个小时,才遭到中国网库的反爬机制:封ip。若有小伙伴想尝试分布式爬虫项目的话,可以自己上手实战,不过想要获取更多的数据量,还需购买代理ip,解决反爬措施。
若两个爬虫实例不足以满足你的数据采集效率,可以在原先虚拟机的基础上克隆出几台完整链接虚拟机,修改配置网卡后一样可以执行爬虫项目。
本次分布式爬虫项目到此结束,若有小伙伴有疑惑的地方,可在评论区留言,小编看到会尽快一一回复;此项目有需要改进的地方,也请大佬不吝赐教,感谢!
“赠人玫瑰,手有余香”,看完的小伙伴记得点赞收藏,感谢!
注:本项目仅用于学习用途,若用于商业用途,请自行负责!!
分布式爬虫(四):大结局相关推荐
- 2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会
2019独角兽企业重金招聘Python工程师标准>>> 阿里云大学在线工作坊上线,原理精讲+实操演练,让你真正掌握云计算.大数据技能. 在第一批上线的课程中,有一个Python爬虫的 ...
- 【通用技术】2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会...
网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取信息的程序或者脚本. 网络爬虫是互联网上进行信息采集的通用手段,在互联网的各个专业方向上都是不可或缺的底层技术支撑.本课程从爬 ...
- 爬虫总结(四)-- 分布式爬虫
分布式爬虫的演习. 分布式爬虫问题其实也就是多台机器多个 spider 对 多个 url 的同时处理问题,怎样 schedule 这些 url,怎样汇总 spider 抓取的数据.最简单粗暴的方法就是 ...
- Python:从零搭建Redis-Scrapy分布式爬虫
Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10.Mac OS X.Ubuntu 16.04.CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端 ...
- 从零搭建Redis-Scrapy分布式爬虫
Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10.Mac OS X.Ubuntu 16.04.CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端 ...
- Win10+Python3.6配置Spark创建分布式爬虫
介绍Spark在Win 10系统中的的安装.配置以及在分布式爬虫中的使用,Python版本为3.6.8. Spark安装.配置和使用请参考<Python程序设计开发宝典>"第12 ...
- NO.35——qq音乐全站分布式爬虫(一)
一.目的 qq音乐提供免费在线试听,但是下载需要付费,通过开发爬虫,绕过付费环节,直接下载我们需要的歌曲. 二.方法 爬取对象是web端qq音乐,爬取范围是全站的歌曲信息,爬取方式是在歌手列表下获取每 ...
- Python分布式爬虫打造搜索引擎
Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 未来是什么时代?是数据时代!数据分析服务.互联网金融,数据建模.自 ...
- 基于Scrapy分布式爬虫的开发与设计
个人博客请访问http://blog.xhzyxed.cn 这个项目也是初窥python爬虫的一个项目,也是我的毕业设计,当时选题的时候,发现大多数人选择的都是网站类,实在是普通不过了,都是一些简单的 ...
最新文章
- 腾讯云详解宕机故障:光纤挖断后的150秒
- Solaris 默认Shell 修改
- mybatis对mapper.xml的解析(三)
- c++可视化开发_页面可视化配置搭建工具技术要点
- 怎么解决深入学习PHP的瓶颈
- 企业大数据应用成熟度如何?大多数企业处于自嗨中
- Java中List与数组互相转换
- linux command read the content,Linux while 和 read 的用法
- Android在WindowManagerService和ActivityManagerService中的Token
- Ecology 建模表单 数据库字段与页面字段对应关系显示
- 太真实了!工业界AI项目落地血泪教训总结
- 《C++程序设计POJ》《WEEK3 类和对象进阶》成员对象和封闭类/友元/this指针/常量成员函数...
- Cisco(思科)路由器端口的配置
- 内部投资回报率IRR
- python中shape 0_Python错误:找到包含0个样本(shape =(0,262))的数组,同时至少需要1个...
- debian7 软件源更新
- 设置名字的第一个字为默认头像
- Python:Numpy—rand、randn
- Nginx负载均衡配置
- keyshot渲染图文教程_keyshot基础图文教程,手把手教你用keyshot制作动画效果