当前位置: 首页 > news >正文

Scrapy的callback进入不了回调方法

一、前言

有的时候,Scrapy的callback方法直接被略过了,不去执行其中的回调方法,可能排查好久都排查不出来,我来教大家集中解决方法。

yield Request(url=url, callback=self.parse_detail, cb_kwargs={'item': item})

二、解决方法

1、url可能被过滤掉了,如果是被scrapy过滤掉了,那就只需要在这个 scrapy.Request() 函数中将参数放入dont_filter=True加入进去。

2、如果发现还是不行,就可能是因为allowed_domains这个赋值的时候赋值的是别的url,其实可以直接把这个注释掉直接不用。

3、仍然无法使用的话,首先那就要看网站协议了,直接在网站中查看输入:https://www.tencent.com/robots.txt 这里就可以看到:

在这里插入图片描述

这里是没有限制的,那么的话按照前两个按照操作就可以正常的回调了

4、如果不行就要打开配置文件settings.py,这里的False表示忽略网站的robots.txt协议,默认为True:

ROBOTSTXT_OBEY = False

把这个设置为False再试下就可以进行回调了。

5、重点来了!!!!如果以下方法还是没有解决问题的话,并且执行日志如下种形式:在这里插入图片描述你有没有想过一种可能,其实你的代码是能正常执行回调函数的!!

你没有看错,你的代码就是对的!!!!那日志里面为什么不出现执行回调函数的信息呢??

原因:程序不是进不了回调方法,是并发数设置的太大,然后页面数量又比较多,Scrapy框架呢又是先把全部页面的请求排到队列中,然后才会去执行回调中的函数,所以前面的日志都是发出请求的日志,只有全部页面都发出请求进入队列之后,才会去爬取数据进入回调方法,所以等久一点就能看到进入回调的日志了。(注意:Scrapy不是先把全部页面的请求排到队列中,然后才会去执行回调中的函数,我这里只是为了方便解释才这么说的,反正大概就是这个意思)

解决方法:如果你认为是进入不了回调方法,并且爬取的页面数量又比较多的话,可以把并发数设置小一点再测试。

在这里插入图片描述

我设置成128之后,完美看到进入回调函数的日志!!

参考文章:https://www.cnblogs.com/zhengxianfa/p/16741295.html

http://www.lryc.cn/news/42482.html

相关文章:

  • 第二十一天 数据库开发-MySQL
  • 蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)
  • Linux编辑器-vim
  • 5G将在五方面彻底改变制造业
  • http和https的区别?
  • 【Spring Cloud Alibaba】4.创建服务消费者
  • C语言——动态内存管理 malloc、calloc、realloc、free的使用
  • 技术分享——Java8新特性
  • vue基础知识大全
  • 第2篇|文献研读|nature climate change|减缓气候变化和促进热带生物多样性的碳储量走廊
  • 从暴力递归到动态规划(2)小乖,你也在为转移方程而烦恼吗?
  • Leetcode.1638 统计只差一个字符的子串数目
  • KoTime:v2.3.9新增线程管理(线程统计、状态查询等)
  • 直面风口,未来不仅是中文版ChatGPT,还有AGI大时代在等着我们
  • 若依微服务(ruoyi-cloud)保姆版容器编排运行
  • vue2图片预览插件
  • 手写Promise源码的实现思路
  • 【数据结构】-关于树的概念和性质你了解多少??
  • 【前端之旅】NPM必知必会
  • Android SQLite使用事务来确保所有语句都以原子方式执行及保证数据完整性一次执行多条语句示例
  • nodejs+vue校园超市小卖部零食在线购物商城系统
  • Karl Guttag:论相机对焦技术在AR/VR中的沿用
  • ECL@SS学习笔记(3)-概念数据模型
  • 206. 反转链表
  • 文心一言 vs GPT-4 —— 全面横向比较
  • rancher2.6进阶之kubectl安装
  • 图像基本变换
  • 基于文心一言的底层视觉理解,百度网盘把「猫」换成了「黄色的猫」
  • 安卓开发的环境配置教程
  • 【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程