Scrapy之奇葩坑你爹:Rule 不调用callback方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/idlehand/article/details/81190443

简单测试代码。。。。

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


class TencentSpider(CrawlSpider):
    name = "tencent"
    allowed_domains = ["hr.tencent.com"]

    start_urls = ["https://hr.tencent.com/position.php?&start=0"]

    linkTor = LinkExtractor(allow=r"start=\d+")

    rules = (
        Rule(linkTor, callback="parse_pages", follow=True),
    )

    def parse_pages(self, reponse):
        print("进来了2")


    def parse(self, response):
        print("进来了1")

以上代码运行,之后触发parse方法

使用日志DEBUG打印出:进来了1

不触发callback回调;

这里将parse方法注释掉,不需要重写,因为当指定了callback的时候,crawlspider会自动调用parse方法;

之后callback回调正常了。。。

小总结:

当编写爬虫规则时,请避免使用parse作为回调函数。 由于CrawlSpider使用parse方法来实现其逻辑,如果您覆盖了parse方法,crawl spider 将会运行失败。

 

阅读更多

没有更多推荐了,返回首页