基于Scrapy框架的分布式网路爬虫实现

优采云 发布时间: 2020-05-14 08:09

  龙源期刊网 基于 Scrapy 框架的分布式网路爬虫实现 作者:陶兴海 来源:《电子技术与软件工程》2017 年第 11 期 摘 要按照互联网实际情况,提出分布式爬虫模型,基于 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 或者正则表达式对 response 中包含的 html 代码进行解析,产 生所须要的数据以及新的任务 url。

   pipelines:该文件作为数据处理、存储的代码段分布式爬虫框架,将在 items 数据被创建后被调用,其中 process_item 的方式就是被调用的方式,所以一定要将其重画,根据实际须要把数据借助方式 dict()转化为字典数据,最后写入 MongoDB。 完成编撰后,在布署的时侯,start_url 的队列只能是第一个运行的爬虫进行初始化,后续 运行的爬虫只能是把新的 url 进行写入不能对其进行再度初始化,部署爬虫的步骤也很简单, 只须要把相关的代码拷贝到目标笔记本上,让后 cmd 命令步入 spiders 的文件夹,运行命令 scrapy crawl XXXX,其中 XXXX 就是爬虫的名子,就完成了爬虫的布署和运行了。 龙源期刊网 4 结语 爬虫的实现,除了基本的步骤和参数设置之外,需要开发者按照实际网站以及数据情况, 针对性的对爬取的策略、数据的去重、数据筛选进行处理,对于爬虫的性能进行有效优化,为 之后的数据剖析做好良好的数据打算。同时,根据须要可以考虑时间的诱因加入到数据结构 中,这就要求爬虫还能通过数据的时间去进行增量爬取。 参考文献 [1]使用 redis 如何实现一个网络分布式爬虫[OL].http: //www.oschina.net/code/snippet_209440_20495/. [2]scrapy_redis 的使用解读[OL].http://www.cnblogs.com/kylinlin/p/5198233.html.http: //blog.csdn.net/u012150179/art

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线