解决scrapy不执行Request回调函数callback

本文探讨了爬虫编程中遇到的常见问题,包括函数未完成时如何添加yield,如何修正allowed_domains配置,以及调整dont_filter参数。通过实例讲解,帮助理解并避免爬虫抓取过程中的常见陷阱。

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

情况1:未完成函数/测试函数

那个函数没有任何结果返回,可能这就是一个测试函数或是没写完的函数,因此只需要在这个函数结尾加一个yield就可以了,回调另一个空的函数就不会有任何影响:

# -*- coding: gbk -*-
    def parse(self, response):
        # balabala
        yield scrapy.Request(movie_url, callback=self.test_page, dont_filter=False, meta={
                'url': movie_url,
            })

    def test_page(self, response): # 不会执行!!!
        print('lalala')

变为:

def parse(self, response):
        # balabala
        yield scrapy.Request(movie_url, callback=self.test_page, dont_filter=False, meta={
                'url': movie_url,
            })

    def test_page(self, response): # 可以执行....
    	print('lalala')
        yield scrapy.Request(movie_url, callback=self.blank, dont_filter=False)
    
    def blank(self,response):
    	pass

情况2:allowed_domains配置了错误

可能是allowed_domains里配置了如:www.baidu.com,但百度的其他页面是 baidu.com/xxxxx,这个就会跳过这个页面。参考:http://www.scrapyd.cn/error/2018/0209/173.html

情况3:dont_filter=True

改成 dont_filter=False

情况4:403/404/500等错误

(感谢vxhorse小伙伴~)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值