python爬虫之urllib库的基本使用二
python爬虫之urllib库的基本使用
什么是urllib?
urllib是python内置的HTTP请求库,是一个用来处理网络请求的python标准库,它包含4个模块。
1,urllib.requests:请求模块,用于发起网络请求
2,urllib.parse: 请求模块,用于解析URL
3,urllib.error: 异常处理模块,用于代理request引起的异常
4,urllib.robotparse: 用于解析robots.txt文件
二,urllib.parse模块
1,parse.quote()
url中只能包含ascii字符,在实际操作过程中,get请求通过url传递的参数中会有大量的特殊字符,例如汉字,那么就需要进行url编码。
例如 https://baike.baidu.com/item/URL编码/3703727?fr=aladdin,我们需要将编码进行url编码
parse.quote()参数需求
quote(string, safe='/', encoding=None, errors=None):
#第一个参数是URL,第二个参数是安全的字符串,即在加密的过程中,该类字符不变。默认为“/”;
示例:
#导入模块
from urllib import parse
url = 'http://httpbin.org/get?qwe={}'
#通过字符串格式化进行拼接url
safe_url = url.format(parse.quote('nanfeng'))
print(safe_url)
输出结果:
http://httpbin.org/get?qwe=nanfeng
2,parse.urlencode()
在发送请求的时候,往往会需要传递很多的参数,如果用字符串方法去拼接会比较麻烦,parse.urlencode()方法就是用来拼接url参数的。
urllib.parse.urlencode(query, doseq=False, safe=”, encoding=None, errors=None, quote_via=quote_plus)
这个函数主要用于接收map类型或两个序列元素的元组,从而将数据拼接成参数,结果返回的是key=value形式,并且多个参数用&分离,即key1=value1&key2=value2
示例如下:
from urllib import parse
params = {'wd':'test','code':1,'height':'180'}
res = parse.urlencode(params)
print(res)
输出结果:
wd=test&code=1&height=180
也可以通过parse.parse_qs()方法将它转回字典
print(parse.parse_qs(‘wd=test&code=1&height=180’))
输出结果:
{'wd': ['test'], 'code': ['1'], 'height': ['180']}
3,urllib.parse.parse_qs()
urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding=’utf-8’, errors=’replace’)
这个函数主要用于分析URL中query组件的参数,返回一个key-value对应的字典格式;
示例如下:
import urllib.parse
print(urllib.parse.parse_qs("name=nanfeng&age=18"))
输出结果
{'name': ['nanfeng'], 'age': ['18']}
4,urllib.parse.urljoin()
urllib.parse.urljoin(base, url, allow_fragments=True)
这个函数用于讲一个基本的URL和其他的URL组装成成一个完成的URL;
示例如下:
import urllib.parse
print(urllib.parse.urljoin("http://httpbin.org/get","Java.html"))
结果输出:
http://httpbin.org/Java.html
上一篇: JavaFX学习之Preloader