python documentation content_python网络学习笔记——urllib.request模块官方文档学习笔记...

学习一个python新方向,就是学习相应库的使用。

此文章记录了urllib.request模块的一些常用常量、参数、类及对应的属性和方法。对于新手不理解的概念、属性、方法进行适当的删减,聚焦于核心的内容。(模块的详细内容请查询官方urllib模块文档。)

注:urllib.request官方文档大部分是英文介绍,笔者借助百度翻译进行了学习记录,难免有错误和不准确的地方,欢迎大家指正。

urllib.request模块

urllib.request 模块定义了适用于在各种复杂情况下打开 URL(主要为 HTTP)的函数和类 --- 例如基本认证、摘要认证、重定向、cookies 及其它。

模块函数(不全):

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None):

打开统一资源定位地址 url,可以是一个字符串或一个 Request 对象。

data:必须是指定要发送到服务器的附加数据的对象,如果不需要这样的数据,则为None。See Request for details.

注:urllib.request模块使用 HTTP/1.1 并且在其 HTTP 请求中包含 Connection:close 头。

可选的timeout参数指定以秒为单位的超时,用于阻塞操作(如果未指定,将使用全局默认超时设置)。这实际上只适用于HTTP、HTTPS和FTP连接。

如果指定了context参数,则必须是描述各种SSL选项的ssl.SSLContext实例。有关详细信息,请参阅HTTPSConnection。

可选的cafile和capath参数为HTTPS请求指定一组可信的CA证书。cafile应该指向包含一系列CA证书的单个文件,而capath应该指向散列证书文件的目录。更多信息可以在ssl.SSLContext.Load_Version_Locations()中找到。

忽略cadefault参数。

这个函数总是返回一个可以作为上下文管理器工作的对象,具有如下方法:

geturl():

返回检索到的资源的URL,通常用于确定是否遵循重定向。

info():以Email.Message_From_String()实例的形式返回页面的元信息.

getcode():

返回响应的HTTP状态代码。

对于HTTP和HTTPS的URL,此函数返回一个OpenerDirector使用UnknownHandler来确保这种情况永远不会发生)。

此外,如果检测到代理设置(例如,设置了*_Proxy环境变量(如http_Proxy),则默认安装ProxyHandler,并确保通过代理处理请求。

代理处理是通过将字典参数传递给urllib.urlopen来完成的,可以通过使用ProxyHandler对象来获得。

urllib.request.getproxies():

此助手函数返回方案(scheme)到代理服务器URL映射的字典。它以不区分大小写的方法扫描环境中名为_proxy的变量,首先检查所有操作系统,当无法找到时,从MacOSX系统配置中为Mac OS X查找代理信息,为从Windows系统注册表查找代理信息。如果小写和大写环境变量都存在(并且不一致),则首选小写。

类:

class urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None):

该类是URL请求的抽象。

data:必须是指定要发送到服务器的附加数据的对象,如果不需要这样的数据,则为Nnoe。目前,HTTP请求是唯一使用data的请求。受支持的对象类型包括bytes, file-like objects,和iterables(可迭代对象)。

对于HTTPPOST请求方法,数据应该是标准application/x-wwwform-urlencode格式中的缓冲区。Urllib.parse.urlencode()函数接受2-元组的映射或序列,并以这种格式返回ASCII字符串。在用作数据参数之前,应该将其编码为字节。

headers应该是一个字典,并将被视为调用add_Header()时,每个键和值都作为参数。这经常被用来“欺骗”User-Agent 头部,浏览器使用这个值来标识自己--一些HTTP服务器只允许来自普通浏览器的请求,而不是脚本。例如,MozillaFirefox可能将自己标识为“Mozilla/5.0(X11;U;Linuxi 686)Gecko/20071127 Firefox/2.0.0.11”,而urllib的默认用户代理字符串是“Python-urllib/2.6”(在Python2.6上)。

如果存在data参数,则应包含适当的Content-Type。如果未提供此header,且data非空,则将添加ContentType:application/x-www-form-urlencode作为默认值。

接下来的两个参数只用来正确处理第三方HTTP cookie。(没看)

如果数据对象不能多次传递其内容(例如,只能生成一次内容的文件或可迭代的文件),并且请求被重试以进行HTTP重定向或身份验证,则请求将无法按预期工作。数据在标头之后立即发送到HTTP服务器。

该类属性:

full_url:传给构造函数的原始RUL。

type:uri组合(The URI scheme)。

host:URI权限(通常是主机),但也可能包含由冒号分隔的端口。

origin_req_host:请求的原始主机,不含端口。

selector:URI 路径。若 Request 使用代理,选择器将会是传给代理的完整 URL。

data:请求的实体,如果没有指定,则为None。

method: 要使用的HTTP请求方法。默认情况下,它的值为None,这意味着get_method()将对要使用的方法进行正常计算。可以通过在Request子类中设置默认值,或者通过方法参数将值传递给Request设置该值,从而在get_method()中重写默认计算。

该类方法:

get_method():

返回指示HTTP请求方法的字符串。如果Request.method不是None,则返回它的值,否则如果Request.data为None,则返回‘GET’,如果Request.method是None而Request.data不是None,则返回‘POST’。这仅对HTTP请求有意义。

add_header(key, val):向请求添加另一个header。header当前被除HTTP处理程序之外的所有处理程序忽略,HTTP处理程序将它们添加到发送到服务器的header列表中。请注意,不能有多个具有相同名称的header,以后的调用将覆盖以前的调用,以防键发生冲突。目前,这并没有丢失HTTP功能,因为所有在多次使用时都有意义的header都有一种(特定于头的)方法,仅使一个header获得相同的功能(原文:Currently, this is no loss of HTTP functionality, since all headers which have meaning when used more than once have a (header-specific) way of gaining the same functionality using only one header)。

add_unredirected_header(key, header):

添加一个不会被加入重定向请求的header。

has_header(header):返回实例是否有命名的标header检查常规的和未重定向的)。

remove_header(header):从请求实例中删除命名的header(包括常规的和未重定向的header)。

get_full_url():返回构造器中给定的 URL(返回 Request.full_url)。

set_proxy(host, type):通过连接到代理服务器来准备请求。host和type将替换实例的host和type,实例的选择器将是构造函数中给出的原始URL。

get_header(header_name, default=None): 返回给定header的值。如果不存在header,则返回default。

header_items():返回Request headers的元组列表(Header_name,Header_value)。

class urllib.request.OpenerDirector:

OpenerDirector类通过BaseHandler打开URL。它管理处理程序的链接,并从错误中恢复。

class urllib.request.FTPHandler

打开 FTP 统一资源定位地址。

方法:

ftp_open(req):打开req指示的FTP文件。登录总是使用空用户名和密码完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值