目录
在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}")