scrapy-redis下载及项目讲解

本文介绍了如何下载和安装git,以及如何使用git克隆scrapy-redis项目。通过实例讲解了scrapy-redis的单机爬虫dmoz项目,以及分布式爬虫mycrawler_redis项目,强调了在运行爬虫前启动redis服务器的重要性,并展示了如何通过redis推送请求链接来实现爬虫的分布式执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,如果没有下载git,执行后续命令时,可能会报错。

下载地址:https://git-scm.com/downloads

安装很简单,一直进行下一步即可(个别选项依照个人需求更改)

空白处鼠标右击,点击 Git Bash Here 出现窗口,输入命令:git --version 即可查看当前下载的git版本(效果如下)

接下来就来下载 scrapy-redis项目

下载地址:https://github.com/rmax/scrapy-redis

 在桌面新建文件夹(名字自定义),然后打开cmd终端,cd到刚才新建的文件夹路径,输入命令:git clone + 复制项目的下载路径,回车执行完毕后,项目就下载好了,文件中显示内容大致如下:

 将文件夹拖入到PyChrom中,点击example下,进入到settings 里面,确保下方代码处于解注释状态

# 使用scrapy_redis的去重类  不使用scrapy默认的去重类
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 使用scrapy_redis的调度器,不使用scrapy默认的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 控制爬虫是否允许暂停
SCHEDULER_PERSIST = True


ITEM_PIPELINES = {
    'example.pipelines.ExamplePipeline': 300,
    # 使用redis数据库所要添加的管道,如果使用redis数据库 必须添加
    'scrapy_redis.pipelines.RedisPipeline': 400,、

#这两句代码可写可不写,如若不写,默认为本机ip
REDIS_HOST = '127.0.0.1'  # redis数据库的ip
# 端口为数字
REDIS_PORT = 6379

接下来就自带的三个爬虫小程序进行实操讲解:

(1)dmoz项目(此处为单机爬虫)

由于 dmoz.com已经于去年停止使用,所以这里就改爬红袖小说的小说名字......

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule


class DmozSpider(CrawlSpider):
    """Follow categories and extract links."""
    name = 'dmoz'
    allowed_domains = ['hongxiu.com']
    start_urls = ['https://www.hongxiu.com/finish']
    # 规则
    rules = [
        # 获取网页的指定内容 然后进入到指定方法里面
        Rule(LinkExtractor(
            restrict_css=('.book-info')
            # follow 设置是否继续执行后面的内容
            # 如果有回调函数,则默认为False 否则为True
        ), callback='parse_directory', follow=True),
    ]

    def parse_directory(self, response):
        # for div in response.css('.title-and-desc'):
        #     yield {
        #         'name': div.css('.site-title::text').extract_first(),
        #         'description': div.css('.site-descr::text').extract_first().strip(),
        #         'link': div.css('a::attr(href)').extract_first(),
        #     }
        print('----------------')
        print(response.url)

在执行命令之前,先在终端打开redis数据库(命令:redis-server redis.windows.conf),之后再打开一个cmd终端窗口,cd到当前需执行的文件夹路径下,然后输入命令:scrapy crawl dmoz 即可。

(2.)mycrawler_redis项目(分布式爬虫)

注意:网页链接依然引用红袖链接

from scrapy.spiders import Rule
from scrapy.linkextractors import LinkExtractor

from scrapy_redis.spiders import RedisCrawlSpider


class MyCrawler(RedisCrawlSpider):
    """Spider that reads urls from redis queue (myspider:start_urls)."""
    name = 'mycrawler_redis'
    # allowde_domains = ['biadu.com']

    redis_key = 'mycrawler:start_urls'  # 类名 : start_urls  推荐写法;标准写法
    # start_urls = ['']

    rules = (
        # follow all links
        Rule(LinkExtractor(), callback='parse_page', follow=True),
        # Rule(LinkExtractor(), callback='detali')
    )
    # 初始化方法
    # def __init__(self, *args, **kwargs):
    #     #   动态的    定义   allowde允许 domains域名 list列表
    #     # Dynamically define the allowed domains list.
    #     # 此处动态定义域名列表
    #     domain = kwargs.pop('domain', '')
    #     # self.allowed_domains = filter(None, domain.split(','))
    #     # super 后面写自己的类名
    #     super(MyCrawler, self).__init__(*args, **kwargs)

    def parse_page(self, response):
        # return {
        #     'name': response.css('title::text').extract_first(),
        #     'url': response.url,
        # }
        print('============================')
        print(response.url)

打开cmd终端,输入命令:scrapy crawl mycrawler_redis ,运行后,会到下图位置停止:

这里先不要关闭或者停止运行,另外打开一个cmd终端,输入命令:redis-cli,效果如下:

 接着再次输入命令:lpush key值(redis-key值)  value值(爬取的网页链接) 回车,上一个终端命令即可继续执行(因为在等待请求网页链接)

打开redis数据库数据库查看:

第三个小项目跟第二个项目类似,这里就跳过了。

Python基于Scrapy-Redis分布式爬虫设计毕业源码(毕设项目).zip 该项目代码主要针对计算机、自动化等相关专业的学生从业者下载使用,项目代码都经过严格调试,确保可以运行!放心下载使用。 也可作为期末课程设计、课程大作业、毕业设计等。具有较高的学习借鉴价值!也可直接当做个人项目使用。 ## 开发环境:Python + Scrapy框架 + redis数据库 ## 程序开发工具: PyCharm 程序采用 python 开发的 Scrapy 框架来开发,使用 Xpath 技术对下载的网页进行提取解析,运用 Redis 数据库做分布式, 设计并实现了针对当当图书网的分布式爬虫程序,scrapy-redis是一个基于redisscrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调度器 dupefilter - URL去重规则(被调度器使用) pipeline - 数据持久化 Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取。但是当我们要爬取的页面非常多的时候,单个主机的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候分布式爬虫的优势就显现出来。 而Scrapy-Redis则是一个基于RedisScrapy分布式组件。它利用Redis对用于爬取的请求(Requests)进行存储和调度(Schedule),并对爬取产生的项目(items)存储以供后续处理使用。scrapy-redi重写了scrapy一些比较关键的代码,将scrapy变成一个可以在多个主机上同时运行的分布式爬虫。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值