学习环境:
windows10操作系统
python3.6
pycharm开发工具
因为python3.6自带的urllib库,所以我们也不用再安装了,直接使用就好了。urllib库有如下模块
urllib.request | 请求数据模块 |
---|---|
urllib.parse | 解析模块 |
urllib.response | 请求响应模块 |
urllib.error | 异常处理模块 |
urllib.robotparser | robots.txt 解析模块 |
接下来我们挨个看一下每个模块都是如何使用。
urllib.request 请求数据模块
urllib.request 模块提供了最基本的构造 HTTP (或其他协议,如 FTP)请求的方法,利用它可以模拟浏览器的一个请求发起过程。利用不同的协议去获取 URL 信息。它的某些接口能够处理基础认证 ( Basic Authenticaton) 、redirections (HTTP 重定向)、 Cookies (浏览器 Cookies)等情况。而这些接口是由 handlers 和 openers 对象提供的。
request中,我们最常用的应该算是urlopen函数了,函数的定义如下:
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
url:需要打开的网址 data: Post 提交的数据, 默认为 None ,当 data 不为 None 时, urlopen() 提交方式为 Post timeout:设置网站访问超时时间参数说明:
下面我们用一个举例来看一下使用。
#导入库 import urllib.request
f=urllib.request.urlopen("http://www.baidu.com")
dict=f.readlines() for i in range(0,len(dict)):
print(dict[i]) #返回获取页面对象的信息
print(f.info())
#获取请求的URL
print(f.geturl())
#获取页面对象的状态码
print(f.getcode())
首先我们需要导入库,然后按照URLopen的定义我们只输入一个url参数,此时程序将采用get方式去获取url的页面内容,一旦连接成功会返回一个文件类型对象。这个对象我们使用f来接收,那么这个对象就存在一些读取内容的方式,如:f.read()、f.readline()、f.readlines()、f.close()和f.fileno()。我这边通过f.readlines()进行验证,读取出来的内容以列表方式返回。返回内容如下:
这个文件对象还有属性获取的方法,如:f.info()、f.geturl()、f.getcode()。返回内容如下:
"C:\Program Files\Python36\python.exe" C:/Users/admin/PycharmProjects/wxgzh/test.py
Bdpagetype: 1
Bdqid: 0xbaa01596000105c8
Cache-Control: private
Content-Type: text/html;charset=utf-8
Date: Wed, 17 Jun 2020 14:28:04 GMT
Expires: Wed, 17 Jun 2020 14:27:20 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1
Set-Cookie: BAIDUID=586A83A705A2C41D638BC40E794DF80C:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=586A83A705A2C41D638BC40E794DF80C; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1592404084; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BAIDUID=586A83A705A2C41D185DF618FB9D4A36:FG=1; max-age=31536000; expires=Thu, 17-Jun-21 14:28:04 GMT; domain=.baidu.com; path=/; version=1; comment=bd
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1429_31669_21090_32046_30824_31845_26350_22159; path=/; domain=.baidu.com
Traceid: 1592404084095445351413447772221317645768
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Connection: close
Transfer-Encoding: chunked
http://www.baidu.com
200
urlopen文件类型对象的方法
urllib.request.urlopen对象方法 | 描述 |
---|---|
f.read(bytes) | 从f中读出所有或bytes个字节 |
f.readline() | 从f中读取一行 |
f.readlines() | 从f中读出所有行,以列表形式返回 |
f.close() | 关闭f的url链接 |
f.fileno() | 返回f的文件句柄 |
f.info() | 获取f的MIME头文件 |
f.geturl() | 返回f真正的url |
f.getcode() | 返回f的状态码 |
关于urlopen的知识点还没有整完,由于时间原因,就只能整理整么多了,明天继续。