还是以解析CSDN为例子吧,哈哈! 1.urlparse
from urllib.parse import urlparse
s=urlparse('https://www.csdn.net/?spm=1011.2124.3001.5359')#解析的网址
print(type(s),s)#打印类型和解析结果
看看打印结果:
<class 'urllib.parse.ParseResult'> ParseResult
(scheme='https',
netloc='www.csdn.net',
path='/',
params='',
query='spm=1011.2124.3001.5359',
fragment='')
分析下结果: ParseResult这个类型对象,打印了六个部分结果: scheme是协议,这里协议就是https netloc是域名,域名是啥就步说了吧,自己百度 path是访问路径 params就是参数 query就是查询条件,一般用作get类型的url fragment就是描点,用于定位页面内部下拉位置 所以网址的标准链接格式就是:
scheme://netloc/path;params?query#fragment
这些能看懂一个网址什么组成的了吧 2.urlunparse 与第一个对立,他接受的参数是可迭代对象,对象长度必须是6
from urllib.parse import urlunparse
data=['http','www.baidu.com','index.com','user','a=7','comment']
print(urlunparse(data))
结果如下:
这就构造了一个url,当然随便构造一个url是不能正常访问的。对比上面的urlparse,一个是拆分url,一个是构造url,哈哈 3.urlsplit 跟urlparse类似,知识返回结果只有五个,params合并到了path中
from urllib.parse import urlsplit
s=urlsplit('https://www.csdn.net/?spm=1011.2124.3001.5359')
print(type(s),s)
老规矩还是以CSDN为例子,看打印结果:
<class 'urllib.parse.SplitResult'>
SplitResult(scheme='https',
netloc='www.csdn.net',
path='/',
query='spm=1011.2124.3001.5359',
fragment='')
但是呢,SplitResult是元组类型,可以通过索取获得想要的,不用都打印出来:
from urllib.parse import urlsplit
s=urlsplit('https://www.csdn.net/?spm=1011.2124.3001.5359')
# print(type(s),s)
print(s.path)
print(s.netloc)
print(s[1])
print(s[3])
这样打印结果姐如下:
4.urlunsplit() 跟上面那个方法类似,这个就是再把各个部分组合成完整的链接,长度必须是5,举例如下:
from urllib.parse import urlunsplit
data=['http','www.csdn.net','/','spm=1011.2124.3001.5359',' ']
print(urlunsplit(data))
根据前面打印拆分结果,我再给它复原了,运行结果如下,又得到csdn首页链接了
5.urljoin 就是对链接的补充合并,自己可以多打印几个试试
from urllib.parse import urljoin
print(urljoin('http://www.baidu.com','index.html'))
print(urljoin('http://www.baidu.com','http://www.baidu.com/index.html'))
效果如下:
6.urlencode 跟上面的类似,也是用于构造url 例子如下:
from urllib.parse import urlencode
parms={
'name':'chuan',
'age':'20'
}
b_url='http://www.baidu.com?'
url=b_url+urlencode(parms)
print(url)
结果:
7.parse_qs
from urllib.parse import parse_qs
u='name=chuan&age=20'
print(parse_qs(u))
parse_qs作用就是把得到的get请求参数字符串转为字典,这样便于好看理解。前面都是有序列化,这个就是反无序化。
8.parse_sql
from urllib.parse import parse_qsl
u='name=chuan&age=20'
print(parse_qsl(u))
跟上面第七个方法类似,这个就是返回的列表,列表里装的元组,元组左边为名,右边为值 9.quote
from urllib.parse import quote
key='川川'
url='http://www.baidu.com/?wd='+quote(key)
print(url)
这个很常见,我的理解就是把中文转换为url格式。对中文进行编码。
10.unquote
from urllib.parse import unquote
url='http://www.baidu.com/?wd=%E5%B7%9D%E5%B7%9D'
print(unquote(url))
它就可以把被编码后的中文还原。
这个模块差不多就这些了,学习爬虫慢慢来,不要一蹴而就。有了这个模块就可以对url解析和构造了。