实现简单分布式爬虫

 

  • 实验目的

1.从一个给定的网址中分析其所包含的 URL 并爬取对应的网页,直到爬取完全部

不重复的网页为止。

2.支持分布式爬取,同时记录输出每一个网页的大小。

3.采用多线程结构设计,实现高性能的网络爬虫。

  • 实验环境

Windows10+python3.6+celery+redis3.2+redis Desktop Manager

  • 实验内容

通过celery架构实现分布式的结构,用redis存储celery的broker和爬取的数据,用python编写的爬虫可以从一个网页爬取该一个网站内的URL以及连接的外链还有它们的网页大小,以json格式返回到redis中存储。

  • 实验结果

1、打开redis服务

cmd中进入redis目录,通过redis-server redis.windows.conf指令打开redis服务。可以看到在6379端口(安装时配置或通过修改配置文件修改)

实现简单分布式爬虫_第1张图片

      

2、celery框架任务发布

从终端进入工作目录,输入celery -A task worker -l info -P eventlet 指令发布task里的任务,展示如下,可以看到config,tasks,连接信息等。可以看到transport在db1、result在db2

3、运行爬虫程序

在pycharm上运行exec_crawling.py,如下所示,该程序通过app.send_task()来开始执行任务。

         实现简单分布式爬虫_第2张图片  

          可以看到celery接收到了task任务。

4、采集完成、存储

采集完成后,通过Redis Desktop Manager看到采集的数据,以json格式存储,如下所示:

        实现简单分布式爬虫_第3张图片

代码:

https://download.csdn.net/download/yuandong_d/10894492

参考资料:

分布式爬虫原理、基础、实战

https://www.jianshu.com/p/b26124772a00

https://www.jianshu.com/p/e5539d96641c

https://www.jianshu.com/p/0c6e162c4bfa#

celery框架学习笔记

http://www.cnblogs.com/forward-wang/p/5970806.html

redis安装

https://blog.csdn.net/scorpio_meng/article/details/80855203 

你可能感兴趣的:(实现简单分布式爬虫)