资讯专栏INFORMATION COLUMN

基于Redis的简单分布式爬虫

zqhxuyuan / 2090人阅读

摘要:建议先大概浏览一下项目结构项目介绍新手向,基于构建的分布式爬虫。以爬取考研网的贴子为例,利用进行解析,将符合要求的文章文本存入数据库中。项目地址有任何问题可以与我联系微信

Ugly-Distributed-Crawler

建议先大概浏览一下项目结构

项目介绍

新手向,基于Redis构建的分布式爬虫。
以爬取考研网的贴子为例,利用 PyQuery, lxml 进行解析,将符合要求的文章文本存入MySQ数据库中。

结构简介 cooperator

协作模块,用于为Master&Worker模块提供代理IP支持

master

提取满足条件的文章url,并交给Worker进一步处理

worker

解析文章内容,将符合要求的存入数据库

环境依赖

sqlalchemy => 1.0.13
pyquery => 1.2.17
requests => 2.12.3
redis => 2.10.5
lxml => 3.6.0

需要预先安装MySQL-server 和 Redis-server.

MySQL中应有名为kybsrc的数据库,且该数据库包含一个名为posts的表,拥有num(INT AUTO_INCREMENT)和post(TEXT)两个字段。

如何启动 0. 先配置好各模块所引用的配置文件 1. 为了更好地运行,cooperator/start.py 应提前开始并完成一次工作函数执行

第一次执行完后,每五分钟运行一次工作函数

2. 启动 master/start.py

默认只执行一次

3. 启动 worker/start.py

默认循环监听是否有新的URL待解析

核心点说明 1. 通过Redis的集合类型进行代理IP和URL的传递
# Summary Reference
# ---------
# 创建句柄
def make_redis_handler():
    pool = redis.ConnectionPool(host=r_server["ip"], port=r_server["port"], password=r_server["passwd"])
    return redis.Redis(connection_pool=pool)

# 获得句柄
def make_proxy_handler():
    return make_redis_handler()

# 保存到指定的set下
def check_and_save(self, proxy):
 "pass"
   self.redis_handler.sadd(r_server["s_name"], proxy)
2. 由于在验证代理IP和使用封装的get_url()函数的时候网络IO较多,所以使用多线程(效果还是很明显的)。
#Summary Reference
#---------
def save_proxy_ip(self):
    "pass"
    for proxy in self.proxy_ip:
        Thread(target=self.check_and_save, args=(proxy,)).start()

def get_url(url):
    "pass"
    while True:
    "pass"
        resp = request("get", url, headers=headers, proxies={"http": proxy})
    "pass"
项目地址 https://github.com/A101428020...

有任何问题可以与我联系(微信:smartseer)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38568.html

相关文章

  • 从0-1打造最强性能Scrapy爬虫集群

    摘要:包括爬虫编写爬虫避禁动态网页数据抓取部署分布式爬虫系统监测共六个内容,结合实际定向抓取腾讯新闻数据,通过测试检验系统性能。 1 项目介绍 本项目的主要内容是分布式网络新闻抓取系统设计与实现。主要有以下几个部分来介绍: (1)深入分析网络新闻爬虫的特点,设计了分布式网络新闻抓取系统爬取策略、抓取字段、动态网页抓取方法、分布式结构、系统监测和数据存储六个关键功能。 (2)结合程序代码分解说...

    vincent_xyb 评论0 收藏0
  • 布式爬虫原理

    分布式爬虫原理 什么是分布式爬虫: 额,这个问题呢,我这样解释,例如爬取网站内的二级网站,我们就需要获取网站中的二级、三级...很多个网站,那么我们如果用自己一台主机爬取明显效率很低,这个时候我们就需要其他主机的帮助了,这个时候我们就将作为Master,为其他主机Slaver提供url的同时,启动程序,没错,我们的工作就这么多,而Slaver主机的作用就是接收url,解析并获取想要的数据。。...

    LeexMuller 评论0 收藏0
  • scrapy-redis布式爬虫框架详解

    摘要:分布式爬虫框架详解随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。下载器中间件位于引擎和下载器之间的框架,主要是处理引擎与下载器之间的请求及响应。 scrapy-redis分布式爬虫框架详解 随着互联网技术的发展与应用的普及,网络作为信息的载体,已经成为社会大众参与社会生活的一种重要信息渠道。由于互联网是开放的,每个人都可以在网络上...

    myeveryheart 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<