python学习笔记2

urllibk库

request模块

urlopen()

Api:

1
urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,  *, cafile=None, capath=None, cadefault=False, context=None)
  1. url:字符串url或Request类

  2. data:字典类需要转码为字节流,如:

1
data = bytes(urllib.parse.urlencode('word': 'hello'), encoding='utf8')
  1. timeout:设置超时时间,超出这个时间未响应,抛出URLError异常,属于urllib.error模块。

  2. cafile:CA证书

  3. capath:CA证书路径

  4. cadefault:已弃用,默认False

  5. context:ssl.SSLContext类型,指定SSL设置,实现SSL加密传输。

Request类

urllib.request.Request

1
2
3
4
5
class Request:

def __init__(self, url, data=None, headers={},
origin_req_host=None, unverifiable=False,
method=None):
  1. url

  2. data:和上面一样,必须传 bytes (字节流)类型.。

  3. heads:请求头,也可以调用add_header()添加。

包括:

  • Accept:浏览器端可以接受的媒体类型,例如text/html表示html文档,*表示任意类型

  • Accept-Encoding

  • Accept-Language

  • Connection:

    例如: Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

    例如: Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

  • Host

  • Referer

  • User-Agent:

    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)。

    伪装浏览器

  • Cache-Control

  • Cookie

用法:

1
2
3
4
headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
'Host': 'httpbin.org'
}
  1. origin_req_host:请求方的host名称或IP地址
  2. unverifiable:这个请求是否无法验证,默认False
  3. method:字符串,指定请求使用的方法,比如GET,POST,PUT。

HTTPResponse

urlopen()返回类型

1
2
3
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
print(type(response))

输出结果:<class ‘http.client.HTTPResponse’>

使用函数

read() 返回的网页内容

print(response.read().decode('utf-8'))

readinto()

getheader(name)

getheaders()

fileno()

属性

msg

version

status 200表示成功,404表示网页未找到

reason

debuglevel

closed