scrapy-redis的settings文件配置

提前安装scrapy_redis库,下载redis数据库,打开redis服务端,然后直接创建scrapy文件,最后添加以下常量至settings文件即可实现分布式

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
SCHEDULER_PERSIST = True    # 为false Redis关闭了 Redis数据也会被清空
REDIS_URL = "redis://127.0.0.1:6379"

直接使用scrapy框架的方式,以下为spider文件

import scrapy

class JdSpider(scrapy.Spider):
    name = 'jd'
    allowed_domains = ['jd.com', 'p.3.cn']
    start_urls = ['https://book.jd.com/booksort.html']

    def parse(self, response):
        # 大分类列表
        dt_list = response.xpath("//div[@class='mc']/dl/dt")
        for dt in dt_list:
            item = {}
            item['b_cate'] = dt.xpath("./a/text()").extract_first()
            yield item

创建rediscrawlspider的时候需要继承导入的RedisCrawlSpider,并且添加start_url的时候需要用redis客户端使用lpush压入redis_key才能启动,如果是继承RedisSpider的话,也是需要压入start_urls的。下面是spider文件

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

class DangdangSpider(RedisCrawlSpider):
    name = 'mycrawler_redis'
    redis_key = 'mycrawler:start_urls'
    allowed_domains = ['dangdang.com']
    
    rules = (
        # follow all links
        # 列表页面
        Rule(LinkExtractor(restrict_xpaths="//ul[@class='title-state-ul']/li"), callback='parse_page'),
        # 列表页面翻页
        Rule(LinkExtractor(restrict_xpaths="//a[@class='arrow-page prov_rota']"), follow=True),
    )

    def parse_page(self, response):
        item = {}
        item['content'] = response.xpath("//div[@class='details-box']/pre/text()").extract()
        print(item)

    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值