欢迎光临散文网 会员登陆 & 注册

Python个人学习笔记 urllib库

2023-07-08 11:18 作者:ベレッタ  | 我要投稿

发送请求

拆分/合并URL

编码/解码URL



发送请求

⑴ 发送GET请求 urllib.request.urlopen(url ,data=None [,timeout])

返回一个http.client.HTTPResponse对象。

参数timeout:用于设置超时时间,单位为秒。请求未在时限内完成会抛出超时异常urllib.error.URLError: <urlopen error timed out>。


http.client.HTTPResponse对象的常用属性/方法

    status:表示HTTP响应的状态码。200表示成功,404表示Not Found等。

    reason:表示与HTTP状态码相对应的原因短语。提供有关状态码的简短描述,例如"OK"、"Not Found"等。

    headers:表示HTTP响应的头部信息。它是一个类似字典的对象,包含响应头部字段的名称和值。

    version:表示HTTP协议的版本。

    getheader(name, default=None):获取指定名称的响应头字段的值。如果该字段不存在,则返回指定的默认值。

    getheaders():获取所有响应头字段的名称和值。返回一个列表,每个元素是一个包含字段名称和值的元组。

    read([size]):读取HTTP响应的内容(HTML代码)。返回一个字节串。可选参数size指定要读取的字节数。如果没有指定size,则读取所有的响应内容。


⑵ 发送POST请求 urllib.request.urlopen(url ,data [,timeout])

参数data:要发送的数据。默认为None。如果提供了数据,则请求将变为POST请求,并将数据作为请求主体发送到服务器。data参数应该是一个字节流(bytes)。

可以用来登录帐号密码,但是现在登录基本都要验证码,不好办。


⑶ 伪装成浏览器 urllib.request.Request(url [,data=None] ,headers)

模拟浏览器发送网络请求,可避开反爬措施。


拆分/合并URL

⑴ urllib.parse.urlparse()

urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True)

参数:

    urlstring:URL。

    scheme:默认协议。

    allow_fragments:是否解析片段标识符。默认为True。

返回一个六元组(scheme,netloc,path,params,query,fragment)。

    scheme:协议。

    netloc:域名。

    path:路径。域名之后/隔开的部分。

    params:附加参数。;隔开的一系列键值对。

    query:查询条件。?之后的部分,&隔开的一系列键值对。

    fragment:片段标识符。#之后的部分。加载页面时会自动跳转到片段标识符指定部分。若allow_fragments为False,则fragment部分会被加到上一个非空部分中。


⑵ urllib.parse.urlunparse()

urllib.parse.urlparse()的反函数。将有六个元素的可迭代对象合并成URL。成分顺序必须对应。


⑶ urllib.parse.urlsplit()

与urllib.parse.urlparse()类似,但不解析params部分,返回一个五元组。


⑷ urllib.parse.urlunparse()

urllib.parse.urlparse()的反函数。


⑸ urllib.parse.urljoin()

urllib.parse.urljoin(base,url)

将URL碎片拼接为完整URL。

base和url拼接时,base中不完整的部分会被覆盖。


编码/解码URL

⑴ urllib.parse.quote()

将非英文字符编码为URL中表示的形式。空格会被编译为%20。


⑵ urllib.parse.urlencode()

将非英文字符编码为URL中表示的形式。空格会被编译为加号+。

参数为字典,会自动以=连接键值对。


⑶ urllib.parse.unquote()

urllib.parse.quote()和urllib.parse.urlencode()的反函数。

解码urllib.parse.urlencode()生成的码时,需要把+替换成%20。


⑷ urllib.parse.parse_qs() / urllib.parse.parse_qsl()

解码query部分,并返回一个字典 / 元组列表。


Python个人学习笔记 urllib库的评论 (共 条)

分享到微博请遵守国家法律