欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python爬虫之urllib库的基本使用二

程序员文章站 2022-06-08 10:49:16
...

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
相关标签: tag