wcq15759797758 发表于 2021-6-26 22:36

爬虫urllib模块

本帖最后由 wcq15759797758 于 2021-6-27 01:23 编辑

一. urllib的使用
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浏览器
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的异常处理
import urllib.request# 导入urllib.request模块
import urllib.error# 导入urllib.error模块
import socket# 导入socket模块
url = 'https://www.python.org/'# 请求地址
try:
    # 发送网络请求,设置超时时间为0.1秒
    response = urllib.request.urlopen(url=url, timeout=0.1)
    print(response.read().decode('utf-8'))# 读取HTML代码并进行utf-8解码
except urllib.error.URLError as error:# 处理异常
    if isinstance(error.reason, socket.timeout):# 判断异常是否为超时异常
      print('当前任务已超时,即将执行下一任务!')


四. urllib的url拼接
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'))


可能补充的不够完整 谅解 谢谢


QingYi. 发表于 2021-6-27 11:57

urllib.request.urlretrieve
页: [1]
查看完整版本: 爬虫urllib模块