本帖最后由 wcq15759797758 于 2021-6-27 01:23 编辑
一. urllib的使用
[Python] 纯文本查看 复制代码 import urllib.request # 导入request子模块
url = 'https://www.cnblogs.com/'
response = urllib.request.urlopen(url=url) # 发送网络请求
print('响应状态码为:',response.status)
print('响应头所有信息为:',response.getheaders())
print('响应头指定信息为:',response.getheader('Accept-Ranges'))
# 读取HTML代码并进行utf-8解码
print('博客园代码如下:\n',response.read().decode('utf-8'))
二. urllib的使用发送POST请求并带UA浏览器
[Python] 纯文本查看 复制代码 import urllib.request # 导入urllib.request模块
import urllib.parse # 导入urllib.parse模块
url = 'https://www.httpbin.org/post' # 请求地址
# 定义请求头信息
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}
# 将表单数据转换为bytes类型,并设置编码方式为utf-8
data = bytes(urllib.parse.urlencode({'hello':'python'}),encoding='utf-8')
# 创建Request对象
r = urllib.request.Request(url=url,data=data,headers=headers,method='POST')
response = urllib.request.urlopen(r) # 发送网络请求
print(response.read().decode('utf-8')) # 读取HTML代码并进行utf-8解码
三. urllib的异常处理
[Python] 纯文本查看 复制代码 [size=2]import urllib.request # 导入urllib.request模块[/size]
[size=2]import urllib.error # 导入urllib.error模块[/size]
[size=2]import socket # 导入socket模块[/size]
[size=2]url = 'https://www.python.org/' # 请求地址[/size]
[size=2]try:[/size]
[size=2] # 发送网络请求,设置超时时间为0.1秒[/size]
[size=2] response = urllib.request.urlopen(url=url, timeout=0.1)[/size]
[size=2] print(response.read().decode('utf-8')) # 读取HTML代码并进行utf-8解码[/size]
[size=2]except urllib.error.URLError as error: # 处理异常[/size]
[size=2] if isinstance(error.reason, socket.timeout): # 判断异常是否为超时异常[/size]
[size=2] print('当前任务已超时,即将执行下一任务!')[/size]
四. urllib的url拼接
[Python] 纯文本查看 复制代码 import urllib.parse #导入urllib.parse模块
base_url = 'https://docs.python.org' # 定义基础链接
# 第二参数不完整时
print(urllib.parse.urljoin(base_url,'3/library/urllib.parse.html'))
# 第二参数完成时,直接返回第二参数的链接
print(urllib.parse.urljoin(base_url,'https://docs.python.org/3/library/urllib.parse.html#url-parsing'))
可能补充的不够完整 谅解 谢谢
|