python中urllib模块使用

发布时间:2024年01月21日

目录

一:访问url

二:发送参数

三:发送带header的参数

四:发送超时时间

五:发送代理服务请求

六:发送认证服务请求


在Python 3中,urllib2模块已被重命名为urllib。在python2中,你可以使用urllib2。

一:访问url

import urllib.request ?
??
response = urllib.request.urlopen('http://www.baidu.com') ?
data = response.read()
print(data)

二:发送参数

import urllib.request ?
import urllib.parse ?
??
data = {'key1': 'value1', 'key2': 'value2'} ?
post_data = urllib.parse.urlencode(data) ?
??
with urllib.request.urlopen('http://www.baidu.com', post_data) as response: ?
? ? data = response.read()
? ? print(data)

三:发送带header的参数

import urllib.request ?
??
url = 'http://www.baidu.com' ?
data = {'key1': 'value1', 'key2': 'value2'} ?
headers = {'User-Agent': 'Mozilla/5.0'} ?
??
# 发送GET请求 ?
req = urllib.request.Request(url, data, headers) ?
response = urllib.request.urlopen(req) ?
data = response.read() ?
print(data)

四:发送超时时间


import urllib.request ?
??
url = 'http://www.baidu.com' ?
timeout = 10 ?# 设置超时时间为10秒 ?
??
try: ?
? ? response = urllib.request.urlopen(url, timeout=timeout) ?
? ? data = response.read() ?
? ? print(data) ?
except urllib.request.URLError as e: ?
? ? print(f"Error: {e.reason}")

五:发送代理服务请求

import urllib.request ?
import urllib.error ?
??
# 代理服务器设置 ?
proxy_handler = urllib.request.ProxyHandler({'http': 'http://proxy.baidu.com:8080'}) ?
??
# 创建未处理HTTP错误的处理程序 ?
http_error_handler = urllib.request.HTTPDefaultErrorHandler() ?
??
# 创建自定义的处理器,包括代理处理器和错误处理器 ?
opener = urllib.request.build_opener(proxy_handler, http_error_handler) ?
??
# 使用自定义的处理器发送请求 ?
try: ?
? ? response = opener.open('http://www.baidu.com') ?
? ? data = response.read() ?
? ? print(data) ?
except urllib.error.HTTPError as e: ?
? ? print(f"Error: {e.code} {e.reason}")

六:发送认证服务请求

import urllib.request ?
import urllib.error ?
??
# 认证信息 ?
username = 'your_username' ?
password = 'your_password' ?
??
# 创建认证处理器 ?
auth_handler = urllib.request.HTTPBasicAuthHandler() ?
auth_handler.add_password(realm='Authentication Required', ?
? ? ? ? ? ? ? ? ? ? ? ? ? uri='http://www.baidu.com', ?
? ? ? ? ? ? ? ? ? ? ? ? ? user=username, ?
? ? ? ? ? ? ? ? ? ? ? ? ? passwd=password) ?
??
# 创建自定义的处理器,包括认证处理器和错误处理器 ?
opener = urllib.request.build_opener(auth_handler) ?
??
# 使用自定义的处理器发送请求 ?
try: ?
? ? response = opener.open('http://www.baidu.com') ?
? ? data = response.read() ?
? ? print(data) ?
except urllib.error.HTTPError as e: ?
? ? print(f"Error: {e.code} {e.reason}")

文章来源:https://blog.csdn.net/qinshi501/article/details/135733238
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。