urllib库的常用方法,urllib库功能
Urllib是Python提供的用于操作URL的模块。在Python2中。x,既有Urllib库,也有Urllib2库,但是在最新的Python3中。x,Urllib2合并成Urllib,这是我们抓取网页时经常用到的。
升级后,包在模块中的位置有很多变化。以下是一些常见的变化:
Python2中使用了Import urllib2。在python 3.x中使用了x和import urllib.request和urllib.error。
Python2中使用了Importurlib。python 3.x中使用了x和importurlib.request、urlib.error、urlib.parse。
Python2中使用了Import urlparse。x,并且在python 3.x中使用导入urllib.parse。
Python2中使用了Import urlopen。x,并导入urllib.request.urlopen在python 3.x中使用。
Python2中使用了Import urlencode。x,并导入urllib.parse.urlencode在python 3.x中使用。
Python2中使用了Importurlib.quote。在Python 3.x中使用importurlib.request.quote。
使用导入cookielib。Python2中的CookieJar。x,并导入http。Python 3.x中的CookeiJar。
使用导入urllib2。Python2中的Requset。x,并在Python 3.x中使用importurllib2.request.request。
其中,本文主要介绍了Python3中各个模块的功能。X
Python3.6.0中的Urllib模块包括以下四个子模块:
urllibis是一个包,它收集了几个用于处理URL的模块:
urllib.requestfor用于打开和读取URL
URL lib . error包含由urllib.request引发的异常
URL lib . parse用于解析URL
URL lib . robot parser for parsing robts . txt files
官方解释如下:
Urllib模块是URL的一个包。
Urllib.request用于访问和读取URL。
Urllib.error包括由urllib.request引起的所有异常
Urllib.parse用于解析URL。
Urllib.robotparser用于解析robots.txt文件(网络蜘蛛)
Urllib.request.urlopen该函数主要用于打开一个URL网页:
Urlopen一般有三个参数,其参数如下:
urllib.requeset.urlopen(url,data,timeout)
# -*-编码:utf-8 -*-
#获取并打印google首页的html
导入urllib.request
response=urllib . request . urlopen( http://www . Google . com )
html=response.read()
打印(html)
Urlopen返回一个类似文件的对象,可以像文件一样操作,支持以下三种方法:
Info():返回一个对象,表示远程服务器返回的标题信息。
Getcode():返回Http状态代码。如果是http请求,200表示请求成功完成;404表示未找到URL。
Geturl():返回请求的url地址。
URL解析
urlparse
URL解析函数关注于将URL字符串拆分成其组成部分,或者将URL组成部分组合成一个URL字符串。
URL lib . parse . URL parse(URL string,scheme= ,allow_fragments=True)
该函数用于将URL解析为六个部分,并返回一个元组。URL的格式为:scheme://net loc/path;参数?查询#片段;它包含六个部分,tuple中的每个元素都是一个字符串,可以为空,而且这六个部分不能再分成更小的部分。
以下是返回的元组元素:
元素编号值不存在时的默认值方案
0请求空字符串路径2层次路径空字符串参数3参数空字符串查询4查询组件空字符串片段5标识符空字符串用户名6用户名无密码7密码无主机名8主机名无端口9端口号无导入urllib.parse
print(URL lib . parse . URL parse( https://www . zhi Hu . com/question/50056807/answer/223566912 ))
ParseResult(scheme=https ,netloc=www.zhihu.com ,path=/question/50056807/answer/223566912 ,params= ,query= ,fragment= )