- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Scrapy框架分布式网络爬虫实现
基于Scrapy框架分布式网络爬虫实现 摘 要根据互联网实际情况,提出分布式爬虫模型,基于Scrapy框架,进行代码实现,且该开发方式可以迅速进行对不同主题的数据爬取的移植,满足不同专业方向的基于互联网大数据分析需要
【关键词】网络爬虫 Scrapy-redis 分布式
1 基本概念
分布式爬虫:分布式方式是以共同爬取为目标,形成多爬虫协同工作的模式,每个爬虫需要独立完成单项爬取任务,下载网页并保存
Scrapy-redis:一个三方的基于redis数据库实现的分布式方式,配合scrapy爬虫框架使用,让scrapy具有了分布式爬取的功能
2 分布式爬虫技术方案
Scrapy-redis分布式爬虫的基本设计理念为主从模式,由作为主控端负责所有网络子爬虫的管理,子爬虫只需要从主控端那里接收任务,并把新生成任务提交给主控端,在整个爬取的过程中不必与其他爬虫通信
主要有几个技术关键点:
2.1 子爬虫爬取任务的分发
通过在主控端安装一个redis数据库,维护统一的任务列表,子爬虫每次连接redis库调用lpop()方法,生成一个任务,并生成一个request,接下去就是如同一般爬虫工作
2.2 用户登录
由于网站对于游客的访问有限制,为了爬取所需信息,必须在程序中实现用户登录,其原理就是能获取到有效的本地cookie,并利用该cookie进行网站访问,除了一般能够用第三方库进行图像识别的验证方式外,一般采用浏览器中手动登录,通过网络工具截取有效的cookie,然后在爬虫生成request时附带上cookie
2.3 url的去重
scrapy_redis有一个dupefilter文件中包含RFPDupeFilter类用于过滤新增的url,可以在该类request_seen中利用redis的key的查找功能,如果所爬取的任务数以亿计则建议Bloomfilter去重的方式对于URL的存储和操作方式进行优化,虽然该方式会造成小于万分之一的过滤遗失率
2.4 数据写入
选择非关系性数据库MongoDB作为硬盘数据库与scrapy进行搭配使用,在pipeline中对item数据进行MongoDB的写入操作
3 基本实现步骤
配置:Windows7 64-bit、Python:2.7.11、 Anaconda 4.0.0 (64-bit)、IDE:Pycharm 3.4.1、Scrapy:1.3.2Redis:X64-3.2、MongoDB:3.2.12
代码实现需要对几个文件进行设置和编写:items、settings、spiders、pipelines
Items:这是一个爬取数据的基础数据结构类,由其来存放爬虫爬取的键值性数据,关键的就是这条语句:_id = Field() _id表示的生成一个数据对象,在Items中可以根据需要设定多个数据对象
Settings:ITEM_PIPELINES该参数决定了item的处理方法;DOWNLOAD_DELAY这个是下载的间隔时间;SCHEDULER指定作为总的任务协调器的类;SCHEDULER_QUEUE_CLASS这个参数是设定处理URL的队列的工作模式一共有四种,一般选用SpiderSimpleQueue即可
spiders:该文件就是爬虫主要功能的实现,首先设定该爬虫的基本信息:name、domain、redis_key、start_urls。爬虫的第一步都是执行方法start_requests,其中核心语句yield Request(url,callback)用以根据url产生一个request并且将response结果回传给callback方法。callback的方法中一般利用xpath或者正?t表达式对response中包含的html代码进行解析,产生所需要的数据以及新的任务url
pipelines:该文件作为数据处理、存储的代码段,将在items数据被创建后被调用,其中process_item的方法就是被调用的方法,所以一定要将其重写,根据实际需要把数据利用方法dict()转化为字典数据,最后写入MongoDB
完成编写后,在部署的时候,start_url的队列只能是第一个运行的爬虫进行初始化,后续运行的爬虫只能是把新的url进行写入不能对其进行再次初始化,部署爬虫的步骤也很简单,只需要把相关的代码拷贝到目标电脑上,让后cmd命令进入spiders的文件夹,运行命令scrapy crawl XXXX,其中XXXX就是爬虫的名字,就完成了爬虫的部署和运行了
4 结语
爬虫的实现,除了基本的步骤和参数设置之外,需要开发者根据实际网站以及数据情况,针对性的对爬取
您可能关注的文档
- 地铁车辆塞拉门安装调试分析.doc
- 地铁车站低压配电监控系统方案设置.doc
- 地铁车辆检修质量管理问题及改进措施.doc
- 地铁运营企业会计核算标准化系统建设思考.doc
- 地铁通信无线覆盖及网络优化探析.doc
- 地铁通信TD―LTE系统干扰及对策.doc
- 地铁隧道穿越溶洞施工处理技术.doc
- 地震岩石物理学理论在合成地震记录中应用.doc
- 地震科普宣传在防震减灾中重要性.doc
- 地铁设备维修管理系统及运营管理功能.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)