Python中使用urllib.request模块发送带Header的请求
发布时间:2023-12-27 13:57:24
在Python中,可以使用urllib.request模块发送带有Header的请求。下面是一个使用例子,总字数可能远远超过1000字。
import urllib.request
# 定义请求的URL和Header
url = 'https://www.example.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Referer': 'https://www.google.com',
'Accept-Language': 'en-US,en;q=0.9',
'Authorization': 'Bearer abcdef1234567890'
}
try:
# 创建请求对象
req = urllib.request.Request(url, headers=headers)
# 发送请求并获取响应
response = urllib.request.urlopen(req)
# 处理响应
if response.status == 200:
# 读取响应内容
content = response.read().decode('utf-8')
print(content)
else:
print('请求失败:', response.status, response.reason)
except urllib.error.URLError as e:
print('请求失败:', e.reason)
上面的代码首先设置了目标URL和要发送的Header,其中User-Agent为浏览器标识,Referer为请求来源URL,Accept-Language为接受的语言类型,Authorization为自定义的认证头。
然后,通过创建urllib.request.Request对象,指定URL和Header,来发起请求。最后,使用urlopen方法发送请求并获取响应。
在处理响应时,可以根据response.status的值来判断请求是否成功,200表示请求成功。如果成功,可以使用response.read().decode('utf-8')读取响应内容。如果失败,可以使用response.status和response.reason获取失败的状态码和原因。
需要注意的是,以上代码在Python 3中有效,在Python 2中需要使用import urllib2和urllib2.Request来进行相同的操作。
总结,使用urllib.request模块发送带有Header的请求,关键是创建urllib.request.Request对象,并设置Header参数。然后,使用urlopen发送请求并处理响应。
