如何重写 crawlspdier 中的构造 规则解析器请求的方法

    def _requests_to_follow(self, response):
        if not isinstance(response, HtmlResponse):
            return
        seen = set()
        for n, rule in enumerate(self._rules):
            links = [lnk for lnk in rule.link_extractor.extract_links(response)
                     if lnk not in seen]
            if links and rule.process_links:
                links = rule.process_links(links)
            for link in links:
                if int(link.url.split('/')[-1])<16493:   #在这里加入自己的条件,其他的不要动
                    print(link.url)
                    seen.add(link)
                    request = self._build_request(n, link)        #通过函数构造符合规则的请求
                    yield rule._process_request(request, response)     #返回请求

    其中   link 是一个 字典  包含符合规则的url 和该url 所在位置标签的 text   例如:

<a href="/web/comic/186244"> 

<span>
        井绳新作《老鲜肉》明日上线!
  </span>  

{url:/web/comic/186244, text= 井绳新作《老鲜肉》明日上线}

二.crawlspider中 规则解析器的用法

   from scrapy.linkextractors import LinkExtractor

    links=LinkExtractor(allow=r' \d+.html ').extract_links (response)    返回一个符合规则的 列表  如下图

 [Link(url='https://www.cheat8.com/a/xitongjiqiao/2018/0227/1570.html', text='补丁绿色', 
  fragment='', 
  nofollow=False),Link(url='https://www.cheat8.com/a/xitongjiqiao/2018/0824/2891.html', 
   text='键过检测', fragment='', nofollow=False)]

    for link in links :

         url=link.url            取到所有url 

   注意   crawlspider中  不能重写parse方法  ,这个方法被用来  提取规则解析器中的url

 

 

    

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值