2008-12-22 38 views

Trả lời

113

Không hoàn toàn. Tạo đối tượng Request không thực sự gửi yêu cầu và Yêu cầu đối tượng không có phương thức Read(). (Ngoài ra: read() là chữ thường.) Tất cả những gì bạn cần làm là vượt qua Request làm đối số đầu tiên cho urlopen() và điều đó sẽ cho bạn phản hồi của bạn.

import urllib2 
request = urllib2.Request("http://www.google.com", headers={"Accept" : "text/html"}) 
contents = urllib2.urlopen(request).read() 
13

Tôi thường sử dụng:

import urllib2 

request_headers = { 
"Accept-Language": "en-US,en;q=0.5", 
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0", 
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
"Referer": "http://thewebsite.com", 
"Connection": "keep-alive" 
} 

request = urllib2.Request("http://thewebsite.com", headers=request_headers) 
contents = urllib2.urlopen(request).read() 
print contents 
1

Bên cạnh các giải pháp khác được đề cập đã có, bạn có thể sử dụng phương pháp add_header.

Vì vậy, ví dụ cung cấp py @pantsgolem sẽ là:

import urllib2 
request = urllib2.Request("http://www.google.com") 

request.add_header('Accept','text/html') 

##Show the header having the key 'Accept' 
request.get_header('Accept') 

response = urllib2.urlopen(request) 
response.read() 
Các vấn đề liên quan