2017-05-31 84 views
-2

你能讓我知道如何使請求版本下面的工作像urllib之一?我不知道發生了什麼問題。實際上,需要引用標頭,以便我的請求不會重定向到主頁。 urllib版本似乎處理得當,然後我可以下載文件。請求重定向到主頁的情況並非如此。看來引用者標題沒有被考慮到,並且我被重定向到主頁。奇怪的行爲的標頭與python請求

感謝

的urllib版本

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 
+1

您在兩個代碼片段中指定了完全不同的引用。 – user2357112

+1

此外,您在'requests'代碼中使用'headers'作爲查詢參數字典,而不是標頭。 – user2357112

+0

感謝user2357112! 引用不同的問題,但正如你所說我的頭沒有成功添加。 取代: r =要求。 get(url,headers = headers,stream = True) 解決了這個問題。 –

回答

0

標題字典作爲不同的參數傳遞。更換:

r = requests.get(url, headers) 

r = requests.get(url, headers=headers) 

解決了這個問題。