欢迎访问宙启技术站
智能推送

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.statusresponse.reason获取失败的状态码和原因。

需要注意的是,以上代码在Python 3中有效,在Python 2中需要使用import urllib2urllib2.Request来进行相同的操作。

总结,使用urllib.request模块发送带有Header的请求,关键是创建urllib.request.Request对象,并设置Header参数。然后,使用urlopen发送请求并处理响应。