吾八哥学Python(十):urllib模块的简单认识
urllib是Python3标准库的一部分,它包含urllib.request,urllib.error,urllib.parse,urllib.robotparser四个子模块。在网上搜索得知:
1.urllib.request模块是用来打开和读取URLs的;
2.urllib.error模块包含一些有urllib.request产生的错误,可以使用try进行捕捉处理;
3.urllib.parse模块包含了一些解析URLs的方法;
4.urllib.robotparser模块用来解析robots.txt文本文件.它提供了一个单独的RobotFileParser类,通过该类提供的can_fetch()方法测试爬虫是否可以下载一个页面。
urllib.request
1.urllib.request.urlopen打开网页,如:
url_home = 'http://www.5bug.wang' response = urllib.request.urlopen(url_home) html = response.read().decode('utf8') print(html)
urlopen返回一个类文件对象response,可以像文件一样操作,同时支持如下方法:
info():返回一个对象,表示远程服务器返回的头信息。
getcode():返回Http状态码,如果是http请求,200表示请求成功完成;404表示网址未找到。
geturl():返回请求的url地址。
read():读取文本,可通过decode设置编码
2.urllib.request.ProxyHandler设置代理
urllib.error
urllib.error有两个方法,URLError和HTTPError。如果想用HTTPError和URLError一起捕获异常,那么需要将HTTPError放在URLError的前面,因为HTTPError是URLError的一个子类。如果URLError放在前面,出现HTTP异常会先响应URLError,这样HTTPError就捕获不到错误信息了。
urllib.parse
1. urlparse(),该函数将一个url字符串分解为6个元素,以元祖的形式返回。这与URL的一般结构相关: scheme://netloc/path;parameters?query#fragment.解析得到的每个元素都是一个字符串,有的元素可能为空.除了返回这6个元素外,返回的对象还包含了一些属性:username、password、hostname、port.
2. urlunparse,此函数作用是把urlparse()分解的元素再拼合还原为一个url,该函数的参数可以是任意的六元组.
3.urlsplit(urlstring[, scheme[, allow_fragments]])此函数与urlparse()类似,不过返回的是一个5元素的元祖,不包括params。
4.urlunsplit(parts)函数此函数是将urlsplit函数分解的元素再组合起来。
5.urljoin(base,url[,allow_fragments]):基于一个base URL和另一个URL构造一个绝对URL.
urllib.robotparser
robotparser 是一个专门用来解析网站的robots.txt文本文件的Python模块。
注:本文部分内容参考网络搜索结果!