我使用urllib模塊中的urlretrieve。Urlretrieve和用戶代理? - Python
我似乎無法找到如何添加用戶代理描述到我的請求。
urlretrieve有可能嗎?還是我需要使用另一種方法?
我使用urllib模塊中的urlretrieve。Urlretrieve和用戶代理? - Python
我似乎無法找到如何添加用戶代理描述到我的請求。
urlretrieve有可能嗎?還是我需要使用另一種方法?
我不認爲這是可能的urlretrieve - 至少不容易。我會建議創建一個urllib2.Request對象並將所需的標題傳遞給它。見
http://docs.python.org/library/urllib2.html#urllib2.urlopen
的例子。
您可以使用URLopener或FancyURLopener類。 'version'參數指定了開啓器對象的用戶代理。
opener = FancyURLopener({})
opener.version = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.69 Safari/537.36'
opener.retrieve('http://example.com', 'index.html')
首先,設置版本:
urllib.URLopener.version = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0'
然後:
filename, headers = urllib.urlretrieve(url)
我知道這個問題已經存在了7年。我試圖找出如何在使用urlretrieve
函數的同時更改User-Agent
來解決這個問題。
爲了任何人誰通過沒有運氣達到了這個問題,這裏是我是如何做到:
# proxy = ProxyHandler({'http': 'http://192.168.1.31:8888'})
proxy = ProxyHandler({})
opener = build_opener(proxy)
opener.addheaders = [('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30')]
install_opener(opener)
result = urlretrieve(url=file_url, filename=file_name)
我加入代理的原因是爲了監視在查爾斯的交通,這裏是我得到的交通:
考慮修復.version(這對我來說太小了) – emartel 2012-11-14 14:30:37