禁止重定向
一.requests
在requests.get 中添加属性 allow_redirects=False,如下:
html = requests.get(url=url,headers=headers,allow_redirects=False)
二.scrapy
1.针对全局修改:
在 settings.py 文件中配置 HTTPERROR_ALLOWED_CODES ,具体重定向状态码可根据网页具体分析
HTTPERROR_ALLOWED_CODES = [301,302]
2.针对单一请求修改:
在指定网页 yield 时,添加参数 meta={‘dont_redirect’: True, ‘handle_httpstatus_list’: [301]}
dont_redirect: True 表示禁止网页重定向;(scrapy默认可以重定向)
handle_httpstatus_list 存放可处理的网页状态码列表;(也可在settings.py中HTTPERROR_ALLOWED_CODES 里添加状态码)
yield scrapy.Request(headers=self.headers(), url=url, callback=self.parse, meta={'dont_redirect': True, 'handle_httpstatus_list': [301]})
三.“取之有道”!!!
有时候不对请求做重定向也可获取重定向后的内容,但“取之有道”!!