scrapy 爬虫爬取出现301 302

在爬取百度知道时,程序运行始终出现301 被重定向到其他地方,看下面日志

2019-02-13 17:18:32 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2019-02-13 17:18:33 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET http://www.baidu.com/search/?lm=0&rn=10&pn=0&fr=search&ie=gbk&word=%D3%E2%C6%DA%C1%CB%D3%D0%BA%DC%C3%B4%CE%A3%BA%A6> from <GET https://zhidao.baidu.com/search?lm=0&rn=10&pn=0&fr=search&ie=gbk&word=%D3%E2%C6%DA%C1%CB%D3%D0%BA%DC%C3%B4%CE%A3%BA%A6>
2019-02-13 17:18:36 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET http://www.baidu.com/forbiddenip/forbidden.html> from <GET http://www.baidu.com/search/?lm=0&rn=10&pn=0&fr=search&ie=gbk&word=%D3%E2%C6%DA%C1%CB%D3%D0%BA%DC%C3%B4%CE%A3%BA%A6>
2019-02-13 17:18:40 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://www.baidu.com/forbiddenip/forbidden.html> (referer: None)
2019-02-13 17:18:41 [scrapy.core.engine] INFO: Closing spider (finished)
2019-02-13 17:18:41 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 2295,

采集的是 zhidao.baidu.com 域名,但是始终重定向到 www.baidu.com,

这期间,已经使用了 User-Agent,并且源连接直接在浏览器打开并不跳转,也使用requests测试,发现并没有被重定向。

搜索很久很久无果,然后无奈开始关注 [scrapy.downloadermiddlewares.redirect] DEBUG 这个东西难道是我开启了某个配置,检查完并没有配置与这个相关的,但是突然发现我竟然配置了一个 DEFAULT_REQUEST_HEADERS

DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, sdch',
    'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    'Host': 'www.baidu.com',
    'RA-Sid': '7739A016-20140918-030243-3adabf-48f828',
    'RA-Ver': '3.0.7',
    'Upgrade-Insecure-Requests': '1',
    'Cookie': 'BAIDUID=F70C562D7BD3A3ABDDD4AFB8586E91F4:FG=1; BIDUPSID=F70C562D7BD3A3ABDDD4AFB8586E91F4; PSTM=1544080678; BD_UPN=123253; H_PS_PSSID=1451_21087_28132_27751_27244; delPer=0; BD_CK_SAM=1; PSINO=5; BD_HOME=1' #'%s' % getCookie()
}

这个是之前做百度搜索时配置的,里面指定了host,爬虫一加载就会使用这个header,结果这里指定的host跟源链接里面的不匹配,就发生了重定向。后面一注释就好了….

总结:出现问题,多看看自己代码,配置。网上大多确实能找到跟你相同的问题,但是这种别致的坑都是自己坑自己,也得自己去发现

    原文作者:mugbya
    原文地址: https://www.jianshu.com/p/001d6aa123cb
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞