标签:cookie sso form 查询 编码 keep 输入 读取 parse
打开 URL url并返回类文件对象,可使用该对象读取返回的数据。简言之,url可以是包含URL的字符串,也可以是 Request类实例。data是URL编码的字符串,包含要上传到服务器的表单数据。
如果提供了data,那么实际使用的就是HTTP"PosT‘方法,而不是‘GET’(默认值)。通常使用urllib.parse.urlencode()之类的函数创建数据。timeout是可选的超时期(以秒为单位),内部存在阻塞操作时使用。
u = urllib.request.urlopen()
方法 | 描述 |
---|---|
u.read( [nbytes]) | |
u.readline() | |
u.readlines() | |
u.fileno() | |
u.close () | |
u.info () | |
u.getcode() | |
u.geturl() |
需要特别强调的是类文件对象υ以二进制模式操作。如果需要以文本形式处理响应数据,则需要使用 codecs模块或类似方式解码数据。
对于简单的请求来说urlopen()的url参数就是一个字符串,如http://www.pythonorg
如果需要执行更加复杂的操作,如修改HTTP请求报头,可创建Request实例并使用其作为url参数。
Request(url [,data [,headers [,origin_ reg host [,unverifiable]]]])
如果请求的是无法验证的URL,则 unveri fiable设为rue。无法验
证的URL的非正式定义是:不是用户直接输入的URL,如加载图像的页面中嵌入的URL。unverifiable的默认值是False,
r= urllib.request.Request()
方法 | 描述 |
---|---|
r.add_ data(data) | |
r.add_ header (key, val) | |
r.add_unredirected-header(key, val) | |
r.get_data() | |
r.get_ full_url() | |
r.get_host() | |
r.get_method () | |
r.get_origin_rea_host() | |
r.get_ selector() | |
r.get_ type () | |
r.has_data() | |
r.is_unverifiable() | |
r.has_ header(header) | |
r.set_proxy(host, type) |
基本的urlopen()函数不支持验证、cookie或者其他高级HTTP功能。要支持这些功能,必须使用 build_opener(函数创建自己的自定义 opener对象
安装不同的opener对象作为ur1open()使用的全局URL opener。opener通常是 build_opener()创建的opener对象。
HttpbasIcautHhandLer、HttpdiGest Authhandler、 ProxyBasicAuthHandler或 ProxyDigestAuthHandler
的组合。这些处理程序都具有以下方法,可用来设置密码。为给定的域和UR添加用户和密码信息。所有参数都是字符串。uxi可以是URI序列,在这种情况下,用户和密码信息适用于序列中的所有URI。 realm是与验证相关联的名称或描述信息。它的值取决于远程服务器。但是,它通常是与相关网页关联的常用名称。uri是与验证相关联的基础URL.realm和uri的常见值类似于(‘adminIstrator‘,‘http://www.somesite.com‘)user和password分别
指定用户名和密码。
如果要管理 Http cookie,需要创建添加了 HttpcooKieprocessor处理程序的 opener对象。例如:
cookiehand = HttpcoOkiepRoceSsor()
opener build_opener(cookiehand)
u=opener.open("http://www.example.com/")
cookiehand=httpcookieprocessor(
httpcookiejar.Mozillacookiejar("cookies.txt")
opener build_opener(cookiehand)
u=opener.open("http://www.examplecom/)
如果需要通过代理重定向请求,可创建 ProxyHandler实例。
Proxy Handler(proxies])创建通过代理路由请求的代理处理程序。参数proxies是一个字典,将协议名称(如‘http,‘ftp等)映射到相应代理服务器的URL。
下例演示了如何使用该方法:
proxy=proxyhandler(('http':'htTp://someproxy.com8080/')
auth=httpbasicauthhandler()
auth.add_password("realm","host","username","password")
opener = build _opener(proxy.auth)
u=openeropen("http://www.examplecom/doc.html")
这是一个内部模块,实现了ur11ib. request模块中函数返回的类文件对象。没有公共API。
URL的一般形式为" scheme://netloc/path; parameters? query# fragment"。另外,URL的netloc部分可能包含一个端口号,如" hostname:port",也可能包含用户验证信息,如"user:pass@hostname"。
urlparse(urlstring [ default_ scheme [ allow fragments]])
ParseResult实例r是一个指定的元组,形式为( scheme, net loc,path, parameters, query,fragment)。
属性 | 描述 |
---|---|
r.scheme | |
r.netloc | |
r.path | |
r.params | |
r.query | |
r.fragment | |
r.username | |
r.password | |
r.hostname | |
r.port |
使用r.geturl()可将 ParseResult实例转换回URL字符串.
- urlunparse(parts)
urlsplit(url [ default_ scheme [ allow fragments]])
使用 r.geturl()可将 SplitResult实例转换回URL字符串。
urldefrag(url)
urljoin(base, url [ allow_fragments])
通过组合基础 URL base和相对URL构造绝对URL。url.a11ow_fragments的含义与 unlparse()中的含义相同。如果基础URL的最后一个组件不是目录,则去除最后的组件。
parse_gs(gs [, keep_blank_values [ strict_parsing]l)
解析URL编码的(MME类型为 application/x-www-form- urlencode)查询字符串qs,并返回字典,其中键是查询变量名称,值是为每个名称定义的值列表。keep_blank_values
是一个布尔值标志,控制如何处理空白值。如果为True,则它们包含在字典中,值设置为空字符串;如果为False(默认值),则将其丢弃。 strict_ parsing是一个布尔值标志,如果为πrue,则将解析错误转换为Valueerror异常。默认情况下会忽略错误。
该方法与 parse_qs()类似,不同之处在于返回的结果是一个(name, value)对列表,其中name是查询变量的名称, value是值。
以下函数可对组成URL的数据进行编码和解码。
使用适合URL内容的转义序列替换 string中的特殊字符。字母、数字和下划线()、逗号(,)句号(.)、连字符(-)都保持不变。所有其他字符都转换为‘%xx‘形式的转义序列。safe提供由其他不应该带有引号的字符组成的字符串,默认为‘/‘。 encoding指定对非ASCI字符使用的编码。默认情况下是utf-8。 errors指定遇到编码错误时的操作,默认值是‘strict‘。
quote_plus(string [ safe [ encoding [ errors]]])
调用quote()并使用加号替换所有空格。string,safe, quote()中的含义相同 encoding和 errors。
quote_from_bytes(bytes [ safe])
该方法与 quote类似,但是接受字节字符串且不执行编码。返回的值为文本字符串。
unquote(string [ encoding [ errors]])
使用转义序列对应的单字符替换‘xx‘形式的转义序列。 encoding和 errors指定‘xx‘转义中编码数据的编码和错误处理。默认编码是‘utf-8‘,默认的 errors策略是‘replace‘。
unquote_ plus(string [ encoding [ errors]])
该方法与 unquote()类似,但使用加号替换空格。
**unquote_to__bytes(string)**
该方法与 unquote(类似,但是不执行任何编码并返回字节字符串。
urlencode(query [,dosed])
将query中的查询值转换为一个URL编码的字符串,该字符串可以作为URL的 query.参数包括在内,或者可以作为POST请求的一部分上传。 query是字典,或者是一个(key, value)对序列。得到的字符串是以"&字符分隔的‘key=va1ue‘对序列,其中key和 value都使用 quote_plus()引用。
dosed参数是一个布尔值标志,如果 query中的vaue是序列,则应该设置为rue,表示同一个键有多个值。在这种情况下,将为value中的每个v创建一个单独的"key=v字符串。
标签:cookie sso form 查询 编码 keep 输入 读取 parse
原文地址:https://www.cnblogs.com/lalavender/p/10425044.html