爬虫学习(5):parse解析链接(网址)

December 09, 2023
测试
测试
测试
测试
7 分钟阅读

还是以解析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解析和构造了。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多