python请求头的奇怪行为
您能告诉我如何使下面的请求版本像urllib版本一样工作吗?我不知道出了什么问题。实际上,需要referer头,以便我的请求不会重定向到主页。urllib版本似乎能正确处理这个问题,然后我就可以下载这个文件了。重定向到主页的请求案例并非如此。似乎没有考虑referer标题,我被重定向到主页 谢谢 urllib版本python请求头的奇怪行为,python,python-requests,Python,Python Requests,您能告诉我如何使下面的请求版本像urllib版本一样工作吗?我不知道出了什么问题。实际上,需要referer头,以便我的请求不会重定向到主页。urllib版本似乎能正确处理这个问题,然后我就可以下载这个文件了。重定向到主页的请求案例并非如此。似乎没有考虑referer标题,我被重定向到主页 谢谢 urllib版本 import urllib.request url = "http://www.truefx.com/dev/data/2017/MARCH-2017/EURUSD-2017-03.z
import urllib.request
url = "http://www.truefx.com/dev/data/2017/MARCH-2017/EURUSD-2017-03.zip"
request = urllib.request.Request(url)
request.add_header('Referer', 'http://www.truefx.com/')
response = urllib.request.urlopen(request)
# Check for redirect
print("Final url:" + response.geturl())
print("Code: " + str(response.code))
print("File size: " + str(response.length))
输出:
> Final url:http://www.truefx.com/dev/data/2017/MARCH-2017/EURUSD-2017-03.zip
> Code: 200
> File size: 53041630
请求版本
url = "http://www.truefx.com/dev/data/2017/MARCH-2017/EURUSD-2017-03.zip"
headers = {"referer": "http://www.truefx.com/?page=download"}
r = requests.get(url, headers)
print(r.url)
print(r.status_code)
输出:
http://www.truefx.com
200
headers dict作为另一个参数传递。替换:
r = requests.get(url, headers)
与
解决了问题。您在两个代码段中指定了完全不同的引用者。此外,您在
请求中使用了标题
作为查询参数dict,而不是标题。感谢用户2357112!推荐人之间的差异不是问题所在,但正如你所说,我的标题没有成功添加。替换为:r=请求。get(url,headers=headers,stream=True)解决了这个问题。
r = requests.get(url, headers=headers)