建设工程公司企业简介,南宁外包seo服务,建设银行 网站,广西八桂职教网官网urllib是Python中的一个模块#xff0c;它提供了一些函数和类#xff0c;用于发送HTTP请求、处理URL编码、解析URL等操作。无需安装即可使用#xff0c;包含了4个模块#xff1a;
#我的Python教程
#官方微信公众号#xff1a;wdPythonrequest#xff1a;它是最基本的htt…urllib是Python中的一个模块它提供了一些函数和类用于发送HTTP请求、处理URL编码、解析URL等操作。无需安装即可使用包含了4个模块
#我的Python教程
#官方微信公众号wdPythonrequest它是最基本的http请求模块用来模拟发送请求。
error异常处理模块如果出现错误可以捕获这些异常。
parse一个工具模块提供了许多URL处理方法如拆分、解析、合并等。
robotparser主要用来识别网站的robots.txt文件然后判断哪些网站可以爬。
1. request模块
1.1 urllib.request.urlopen用于打开和读取URL网址并返回一个响应对象。 import urllib.requestresponseurllib.request.urlopen(https://www.baidu.com) #请求站点获得一个HTTPResponse对象
print(response.read().decode(utf-8)) #返回网页内容
#print(response.getheader(server)) #返回响应头中的server值
#print(response.getheaders()) #以列表元组对的形式返回响应头信息
#print(response.fileno()) #返回文件描述符
#print(response.version) #返回版本信息
print(response.status) #成功返回状态码200404代表网页未找到
#print(response.debuglevel) #返回调试等级
#print(response.closed) #返回对象是否关闭布尔值
#print(response.geturl()) #返回检索的URL
#print(response.info()) #返回网页的头信息
#print(response.getcode()) #返回响应的HTTP状态码
#print(response.msg) #访问成功则返回ok
#print(response.reason) #返回状态信息1.2 urllib.request.Request你可以使用它来定制请求的 URL、请求方法GET、POST 等、请求头、请求数据等。
url请求的URL必传参数其他都是可选参数。
data上传的数据必须传bytes字节流类型的数据如果它是字典可以先用urllib.parse模块里的urlencode()编码。
headers它是一个字典传递的是请求头数据可以通过它构造请求头也可以通过调用请求实例的方法add_header()来添加。
method是一个字符串用来指示请求使用的方法如GET,POST,PUT等。
以下是一个Request对象使用的例子 from urllib.request import Request, urlopen url http://www.example.com/
headers {User-Agent: Mozilla/5.0}
data None # POST 数据如果是 GET 请求则为 None
req Request(url, datadata, headersheaders) response urlopen(req)
html_data response.read()
print(html_data)1.3 urllib.request.urlretrieve将网页文件 图片音频等等保存在本地电脑。urlretrieve(音频网址, f’保存到电脑上的路径.m4a’)
1.4 urllib.request.urlcleanup用于清理由 urlretrieve 函数下载的临时文件。当使用 urlretrieve 函数下载文件时它会将文件保存在一个临时位置然后在文件下载完成后可以使用 urlcleanup 函数来清理这些临时文件。
2.error模块urllib的error模块定义了由request模块产生的异常如果出现问题request模块便会抛出error模块中定义的异常。
2.1 URLError类来自urllib库的error模块它继承自OSError类是error异常模块的基类由request模块产生的异常都可以通过捕获这个类来处理。它只有一个属性reason即返回错误的原因。
from urllib import request,error
try:#该url是不存在的所以会产生异常response request.urlopen(https://xiaohongniu918918.com/)except error.URLError as e:#由于访问的网页不存在所以会打印Not Foundprint(e.reason)else:html response.read()3.urllib.parse 中常用的函数和类
3.1 urllib.parse.urlparse(): 解析 URL返回一个 ParseResult 对象这个对象包含以下属性
schemeURL 的协议部分例如 ‘http’ 或 ‘https’。
netloc网络位置通常是主机名和端口号如果有的话。
pathURL 路径。
params参数在 URL 路径中的分号分隔的键值对。
query查询字符串在 URL 中的问号之后的部分。
fragmentURL 的片段也称为锚点在 URL 中的井号之后的部分。
from urllib.parse import urlparse url urlparse(http://www.example.com/path?paramvalue#anchor)
print(url.scheme) # 输出http
print(url.netloc) # 输出www.example.com
print(url.path) # 输出/path
print(url.params) # 输出因为没有参数
print(url.query) # 输出paramvalue
print(url.fragment)# 输出anchor#你可以使用geturl() 方法来获取完整的 URL 字符串
print(url.geturl()) # 输出http://www.example.com/path?paramvalue#anchor3.2 urllib.parse.urlunparse(): 将 ParseResult 对象转换回 URL 字符串。要求你提供的元组或列表中的元素顺序必须正确否则结果可能不是你期望的 URL。
from urllib.parse import urlunparseurl_components (http, www.example.com, /path, , paramvalue, anchor)
url urlunparse(url_components)
print(url) # http://www.example.com/path?paramvalue#anchor3.3 urllib.parse.urljoin: 接受一个基础 URL 和一个或多个 URL 片段作为参数并返回一个拼接后的完整 URL。 from urllib.parse import urljoinbase_url http://www.example.com
url_fragment /path/to/resourcefull_url urljoin(base_url, url_fragment)
print(full_url) # http://www.example.com1/path/to/resource3.4 urllib.parse.urldefrag(url): 接受一个 URL 字符串作为参数并返回一个包含两个元素的元组不包含片段标识符的基础 URL 和片段标识符。
from urllib.parse import urldefrag url http://www.example.com/path#fragment
base_url, fragment urldefrag(url) print(base_url) # 输出http://www.example.com/path
print(fragment) # 输出fragment3.5 urllib.parse.urlsplit接受一个 URL 字符串作为参数并返回一个 SplitResult 对象该对象包含 URL 的各个组成部分。
from urllib.parse import urlsplit url http://www.example.com/path?paramvalue#anchor
parts urlsplit(url) print(parts.scheme) # 输出http
print(parts.netloc) # 输出www.example.com
print(parts.path) # 输出/path
print(parts.query) # 输出paramvalue
print(parts.fragment) # 输出anchor3.6 urllib.parse.urlunsplit(parts): 类似于urlunparse接受一个包含 URL 的各个组成部分的 ParseResult 对象或元组作为参数并返回一个完整的 URL 字符串。
from urllib.parse import urlunspliturl_components (http, www.example.com, /path, paramvalue, anchor)
url urlunsplit(url_components)print(url) # 输出http://www.example.com/path?paramvalue#anchor3.7 urllib.parse.parse_qs接受一个查询字符串作为参数并返回一个字典其中包含查询字符串中的参数和对应的值。
from urllib.parse import parse_qsquery_string key1value1key2value2key3value3
print(parse_qs(query_string))
# 输出{key1: [value1], key2: [value2], key3: [value3]}3.8 urllib.parse.parse_qsl: 解析 URL 查询字符串返回一个元组的列表
from urllib.parse import parse_qslquery_string key1value1key2value2key3value3print(parse_qsl(query_string))
# 输出[(key1, value1), (key2, value2), (key3, value3)]3.9 urllib.parse.quote: 将字符串进行URL编码。
from urllib.parse import quotes Wo, Python教程!
quoted_s quote(s)print(quoted_s) # 输出Wo%2C%20Python%E6%95%99%E7%A8%8B%213.10 urllib.parse.unquote(s, encoding‘utf-8’, errors‘replace’): 将 URL 编码的字符串解码。 from urllib.parse import unquotequoted_s Wo%2C%20Python%E6%95%99%E7%A8%8B%21
print(unquote(quoted_s))
# 输出Wo, Python教程!3.11 urllib.parse.quote_plus(s, safe’ , encoding‘utf-8’, errors‘replace’): 将字符串进行 URL 编码并将空格转换为加号。
from urllib.parse import quote_pluss Wo, Python 教程!
print(quote_plus(s))
# 输出Wo%2CPython%E6%95%99%E7%A8%8B%213.12 urllib.parse.unquote_plus(s, encoding‘utf-8’, errors‘replace’): 将 URL 编码的字符串解码并将加号转换为空格。
from urllib.parse import unquote_plusquoted_s Wo%2CPython%E6%95%99%E7%A8%8B%21
print(unquote_plus(quoted_s))
# 输出Wo, Python 教程!