Python中Scrapy框架遇到404错误如何解决?
2019-01-05 14:04:50 [csrc][scrapy.core.engine] DEBUG: Crawled (404) <GET http://www.csrc.gov.cn/pub/zjhpublic/G00306202/201806/t20180622_340238.htm> (referer: http://www.csrc.gov.cn/pub/newsite/xxpl/yxpl/index_16.html)
2019-01-05 14:04:51 [csrc][scrapy.spidermiddlewares.httperror] INFO: Ignoring response <404 http://www.csrc.gov.cn/pub/zjhpublic/G00306202/201806/t20180622_340238.htm>: HTTP status code is not handled or not allowed
抓取 网址的时候 报 404,很多都没有问题,就是个别的出现 404 这是为啥?
网址:
http://www.csrc.gov.cn/pub/newsite/xxpl/yxpl/index.html
Python中Scrapy框架遇到404错误如何解决?
别爬了,要被抓起来吃牢饭的
遇到404,首先得确定是Scrapy的问题还是目标网站的问题。先看下你的爬虫代码,是不是URL构造错了。
最直接的排查方法是手动访问那个URL,用浏览器或者curl命令试试。如果手动访问也是404,那说明链接本身就不存在,得检查你的URL生成逻辑或者起始链接。
如果手动访问正常,但Scrapy返回404,那可能是网站对Scrapy的请求头有检测。Scrapy默认的User-Agent比较明显,有些网站会屏蔽。可以尝试在settings.py里修改默认的User-Agent,或者启用中间件随机更换。
另外,检查一下是不是触发了网站的防爬机制,比如请求频率太高。可以在settings.py里适当调大DOWNLOAD_DELAY。
这里有个简单的代码示例,展示如何设置User-Agent和下载延迟:
# settings.py
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
DOWNLOAD_DELAY = 2 # 每次请求间隔2秒
# 或者在爬虫类里单独设置
class MySpider(scrapy.Spider):
name = 'my_spider'
custom_settings = {
'USER_AGENT': '你的自定义UA',
'DOWNLOAD_DELAY': 3,
}
# ... 其他代码
如果以上都不行,用Scrapy的日志看看详细的请求和响应信息,有时候网站返回的404页面里会有线索。
总结:先手动验证URL,再检查请求头和频率。
在线 debug …
论坛在线发贴 debug
测试了一下没有啊。。。
2019-01-05 15:13:20 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://www.csrc.gov.cn/pub/zjhpublic/G00306202/201806/t20180622_340238.htm> (referer: None)
真·在线 debug

你也是厉害,花钱请个人不比你问的强??

