网站建设费属于服务类么,平度推广网站建设,广西商城网站建设,联想公司网站建设现状一、前言
有的时候#xff0c;Scrapy的callback方法直接被略过了#xff0c;不去执行其中的回调方法#xff0c;可能排查好久都排查不出来#xff0c;我来教大家集中解决方法。
yield Request(urlurl, callbackself.parse_detail, cb_kwargs{item: item})二、解决方法
1…一、前言
有的时候Scrapy的callback方法直接被略过了不去执行其中的回调方法可能排查好久都排查不出来我来教大家集中解决方法。
yield Request(urlurl, callbackself.parse_detail, cb_kwargs{item: item})二、解决方法
1、url可能被过滤掉了如果是被scrapy过滤掉了那就只需要在这个 scrapy.Request() 函数中将参数放入dont_filterTrue加入进去。
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