2010-03-02 25 views
8

Tôi đang sử dụng urlretrieve từ mô-đun urllib.Urlretrieve và User-Agent? - Python

Tôi dường như không thể tìm cách thêm mô tả Tác nhân người dùng vào yêu cầu của mình.


Có thể với urlretrieve không? hoặc tôi có cần sử dụng phương pháp khác không?

Trả lời

4

Bạn có thể sử dụng các lớp URLopener hoặc FancyURLopener. Đối số 'phiên bản' chỉ định tác nhân người dùng của đối tượng mở.

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

Xem xét sửa lỗi .phiên bản (nó quá nhỏ của bản chỉnh sửa để tôi thực hiện) – emartel

6

Đầu tiên, thiết lập phiên bản:

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' 

Sau đó:

filename, headers = urllib.urlretrieve(url) 
0

Tôi biết vấn đề này đã có 7 năm. Và tôi đã đạt được vấn đề này bằng cách cố gắng tìm ra cách thay đổi User-Agent trong khi sử dụng chức năng urlretrieve.

Đối với những ai đạt vấn đề này bằng cách không may mắn, đây là cách tôi đã làm:

# 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) 

Lý do tôi thêm vào proxy là để giám sát giao thông tại Charles, và đây là giao thông tôi nhận:

See the User-Agent

Các vấn đề liên quan