免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 14716 | 回复: 1

使用scrapy,redis, mongodb实现的一个分布式网络爬虫 [复制链接]

论坛徽章:
0
发表于 2013-04-18 07:47 |显示全部楼层
------使用scrapy,redis, mongodb,graphite实现的一个分布式网络爬虫,底层存储mongodb集群,分布式使用redis实现, 爬虫状态显示使用graphite实现。

这是项目的地址:https://github.com/gnemoug/distribute_crawler.git

------这个工程是我对垂直搜索引擎中分布式网络爬虫的探索实现,它包含一个针对http://www.woaidu.org/ 网站的spider, 将其网站的书名,作者,书籍封面图片,书籍概要,原始网址链接,书籍下载信息和书籍爬取到本地:
------分布式使用redis实现,redis中存储了工程的request,stats信息,能够对各个机器上的爬虫实现集中管理,这样可以 解决爬虫的性能瓶颈,利用redis的高效和易于扩展能够轻松实现高效率下载:当redis存储或者访问速度遇到瓶颈时,可以 通过增大redis集群数和爬虫集群数量改善。
------底层存储实现了两种方式:
------------将书名,作者,书籍封面图片文件系统路径,书籍概要,原始网址链接,书籍下载信息,书籍文件系统路径保存到mongodb 中,此时mongodb使用单个服务器,对图片采用图片的url的hash值作为文件名进行存储,同时可以定制生成各种大小尺寸的缩略 图,对文件动态获得文件名,将其下载到本地,存储方式和图片类似,这样在每次下载之前会检查图片和文件是否曾经下载,对 已经下载的不再下载;
------------将书名,作者,书籍封面图片文件系统路径,书籍概要,原始网址链接,书籍下载信息,书籍保存到mongodb中,此时mongodb 采用mongodb集群进行存储,片键和索引的选择请看代码,文件采用mongodb的gridfs存储,图片仍然存储在文件系统中,在每次下载 之前会检查图片和文件是否曾经下载,对已经下载的不再下载;
------避免爬虫被禁的策略:
------------禁用cookie
------------实现了一个download middleware,不停的变user-aget
------------实现了一个可以访问google cache中的数据的download middleware(默认禁用)
------调试策略的实现:
------------将系统log信息写到文件中
------------对重要的log信息(eg:drop item,success)采用彩色样式终端打印
------文件,信息存储:
------------实现了FilePipeline可以将指定扩展名的文件下载到本地
------------实现了MongodbWoaiduBookFile可以将文件以gridfs形式存储在mongodb集群中
------------实现了SingleMongodbPipeline和ShardMongodbPipeline,用来将采集的信息分别以单服务器和集群方式保存到mongodb中
------访问速度动态控制:
------------跟据网络延迟,分析出scrapy服务器和网站的响应速度,动态改变网站下载延迟
------------配置最大并行requests个数,每个域名最大并行请求个数和并行处理items个数
------爬虫状态查看:
------------将爬虫stats信息(请求个数,文件下载个数,图片下载个数等)保存到redis中
------------实现了一个针对分布式的stats collector,并将其结果用graphite以图表形式动态实时显示
------mongodb集群部署:在commands目录下有init_sharding_mongodb.py文件,可以方便在本地部署

[图片] 爬虫运行状态graphite实时显示
scrapy_graphite_statscol.png
Screenshot-2013-04-17 16:32:51.png
[图片] 爬虫运行终端截图
Screenshot-2013-04-17 16:09:24.png
Screenshot-2013-04-17 16:13:03.png
[图片] 下载的图片截图
Screenshot-2013-04-17 22:15:56.png
[图片] 下载的书籍文件截图
Screenshot-2013-04-17 16:50:50.png
Screenshot-2013-04-17 16:52:03.png
[图片] mongodb集群运行
Screenshot-2013-04-17 16:12:08.png
[图片] 数据mongodb存储
Screenshot-2013-04-17 22:22:33.png
[图片] 文件mongodb集群存储
Screenshot-2013-04-17 16:10:57.png
[图片] 日志文件截图
Screenshot-2013-04-17 16:56:47.png

论坛徽章:
0
发表于 2013-04-21 11:17 |显示全部楼层
lz如果封ip呢?

如何发现被封?

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP