No75:Scrapy常见问题汇总
1、TimeoutError报错解决方法
- 问题描述
# twisted.internet.error.TimeoutError: User timeout caused connection failure: |
一般是在全局配置settings.py中设置了DOWNLOAD_TIMEOUT,或用了代理IP等,就会出现这类报错。
- 解决方法为
在middleware中,捕获这个报错,并返回request,让他重新请求这个对象。
from twisted.internet.error import TimeoutError |
2、scrapy里面item传递数据后数据不正确的问题
按照理想状态,最后的item数据每个都是唯一的,但是实际情况是最后的item很多数据都是重复和错乱的,完全不对。
查找原因后,发现是因为使用Request函数传递item时,使用的是浅复制(对象的字段值被复制时,字段引用的对象不会被复制)。
解决方法
import copy |
按照这个方法,把几个Request里面的都改了,数据是正常了。
但是,还没完。
此时,如果打开Pipeline,再跑一遍查看数据,发现还是错乱的。
因为,最后yield item后,如果需要下载图片,Pipeline的get_media_requests方法需要参数item,通过item获取图片URL再去下载,如果是浅拷贝就有可能跟上面的情况一样。
解决方法
import copy |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 新码农!
评论