实例域名: http://www.baidu.com/index.html;user?id=S#comment
URL通过特定的分隔符解析:
冒号’:‘前面的就是 scheme,代表协议;第一个’/‘符号前面便是 netloc ,即域名,后面是 path,即访 问路径(其实包含‘/’本身);分号’;‘后面是 params ,代表参数;问号’?‘后面是查询条件 query, 一般用作 GET 类型的 URL; 井号’#'后面是锚点,用于直接定位页面内部的下拉位置。

urllib.parse.urlparse(urlstring, scheme=”, allow_fragments=True)
scheme: 它是默认的协议(比如 http 或 https 等) 假如这个链接没有带协议信息,会将这个作为默认的协议。
allow_fragments :即是否忽略fragment。 如果它被设置为 False,干ragment部分就会被忽略, 它会被解析为 path、 parameters 或者 query 的一部分,而 fragment 部分为空。
返回一个元组,我们可以用索引顺序来获取,也可以用属性名获取

实例代码:

from urllib.parse import *url = 'http://www.baidu.com/index.html;user?id=5#comment'
result1 = urlparse(url)
print(type(result1))
print('result1 : ', result1)
result1 = urlparse(url, allow_fragments=False)
print(result1)#  urlsplit() :和 urlparse()方法非常相似, 只不过它不再单独解析 params 这一部分,只返回 5 个结果。同样返回也是元组。
result2 = urlsplit(url)
print('result2 : ', result2)# urlunparse():接受一个可迭代对象(字典取得是key部分,贼傻),长度必须是6.组装为一个URL。
data1 = ['http', 'www.baidu.com', '/index.html', 'user', 'id=S', '#comment', ]
print(urlunparse(data1))#  urlunsplit() :与 urlunparse()类似,传入的参数也是一个可迭代对象 ,唯一的区别是长度必须为 5。
data2 = ['http', 'www.baidu.com', '/index.html;user', 'id=S', '#comment', ]
print(urlunsplit(data2))# urljoin() :提供一个 base_url (基础链 接 ) 作为第一个参数,将新的链接作为第二个参数,该方法会分析 base_url 的 scheme、 netloc
#                  和 path 这 3 个内容并对新链接缺失的部分进行补充,最后返回结果。
print(urljoin('http://www.baidu.com', '?category=2#comment'))# urlencode() :将一个字典构造为 GET 请求参数
params = {'scheme': 'http', 'netloc': 'www.baidu.com', 'path': '/index.html', 'name': 'germey', 'age': 22}
print(urlencode(params))
params = {'name': 'germey', 'age': 22}
print('http://www.baidu.com?' + urlencode(params)) #所以urlencode只是加参数,并不负责解析字典# parse_qs():将参数转化字典
# parse_qsl():将参数转化为元组组成的列表
print(parse_qs('name=germey&age=22'))
print(parse_qsl('name=germey&age=22'))# quote() :URL 中带有中文参数时,有时可能会导致乱码的问题,用这个方法可以将文字符转化为 URL 编码。
# unquote() :它可以进行 URL解码。
keyword = '壁纸'
url = 'https://www.baidu.com/s?wd='+ quote(keyword)
print(url)
print(unquote(url))

程序运行结果:

<class 'urllib.parse.ParseResult'>
result1 :  ParseResult(scheme='http', netloc='www.baidu.com', path='/index.html', params='user', query='id=5', fragment='comment')
ParseResult(scheme='http', netloc='www.baidu.com', path='/index.html', params='user', query='id=5#comment', fragment='')
result2 :  SplitResult(scheme='http', netloc='www.baidu.com', path='/index.html;user', query='id=5', fragment='comment')
http://www.baidu.com/index.html;user?id=S##comment
http://www.baidu.com/index.html;user?id=S##comment
http://www.baidu.com?category=2#comment
scheme=http&netloc=www.baidu.com&path=%2Findex.html&name=germey&age=22
http://www.baidu.com?name=germey&age=22
{'name': ['germey'], 'age': ['22']}
[('name', 'germey'), ('age', '22')]
https://www.baidu.com/s?wd=%E5%A3%81%E7%BA%B8
https://www.baidu.com/s?wd=壁纸

python爬虫第二课:url解析相关推荐

  1. Python爬虫第二课 Selenium介绍和反爬技术

    selenium的介绍 知识点: 了解 selenium的工作原理 了解 selenium以及chromedriver的安装 掌握 标签对象click点击以及send_keys输入 1. seleni ...

  2. python爬虫第二弹-多线程爬取网站歌曲

    python爬虫第二弹-多线程爬取网站歌曲 一.简介 二.使用的环境 三.网页解析 1.获取网页的最大页数 2.获取每一页的url形式 3.获取每首歌曲的相关信息 4.获取下载的链接 四.代码实现 一 ...

  3. python爬虫详细步骤-Python爬虫的两套解析方法和四种爬虫实现过程

    对于大多数朋友而言,爬虫绝对是学习 python 的最好的起手和入门方式.因为爬虫思维模式固定,编程模式也相对简单,一般在细节处理上积累一些经验都可以成功入门.本文想针对某一网页对 python 基础 ...

  4. 9139 位艺人在 Python 面前不值一提 # Python 爬虫小课 5-9

    本篇博客的最终目标是爬取世界上 9139 位艺人的身高.体重.生日.血型,当然有些数据目标网站没有提供,不在做过多的扩展. 爬虫小课系列文章导读链接 第一篇:Python 爬虫小课 1-9 宝妈程序媛 ...

  5. 虎嗅 24 小时点赞器,一个案例附带一个爬虫技巧,Python 爬虫小课 7-9

    很多平台都有点赞功能,今天提供的这个思路可用于很多平台,希望可以掌握该技巧,实现你自己的点赞器.本案例目标为虎嗅 24 小时频道点赞. 爬虫小课系列文章导读链接 第一篇:Python 爬虫小课 1-9 ...

  6. 25 岁以上的程序员,认识不了几个中药材的。Python 爬虫小课 9-9

    中药材在橡皮擦眼中,只有 马钱子.决明子.苍耳子.还有莲子.黄药子.苦豆子.川楝子.我要面子,这是少时从<本草纲目>学来的. 其余的也就知道个枸杞.三七.藿香正气水.板蓝根了,为了摆脱不认 ...

  7. Python爬虫怎么挣钱?解析Python爬虫赚钱方式,轻轻松松月入两万,再也不用为钱发愁啦

    Python爬虫怎么挣钱?解析Python爬虫赚钱方式,想通过自己学到的专业技能赚钱,首先需要掌握Python爬虫技术,专业能力强才能解决开发过程中出现的问题,可以通过Python爬虫外包项目.整合信 ...

  8. 学会这 10000 个段子,成为 IT 职场幽默达人。Python 爬虫小课 8-9

    现代职场达人,应该做到 有情.有趣.有用.有品.好了,去掉 "有" 字你就成了.那如何成为职场幽默达人呢,咱需要一定的素材也就是段子,多看段子才能多说段子,并且还能说高级段子. 点 ...

  9. 小吃搜搜乐,弄点小吃数据放在本地、Python 爬虫小课 6-9

    最近查询一下河北有哪些小吃,找来找去不是很方便,发现百度有个接口,顺手牵一下数据,通过各省份的枚举,把数据都整理到 Excel 中,以后在查询就比较方便了. 下图为最终抓取数据格式,都是好吃的. 爬虫 ...

最新文章

  1. CSDN博客的创建及使用
  2. java虚拟机内存比例,【Java虚拟机】堆内存分配策略总结
  3. python管道_python中管道用法入门,举个例子
  4. python书籍推荐知乎-python入门书籍(爬虫方面)有哪些推荐?
  5. 页面无刷新ajax上传文件--模拟iframe,超简单
  6. 前端问题:button按钮在form表单的时候会当成submit提交
  7. 蚂蚁金服CTO程立:AI尚不具备金融级的能力,开放是突破边界唯一出路
  8. SDL学习——画图、点阵显示
  9. Python字符串swapcase()
  10. 先根序列创建二叉树c语言,用C语言创建二叉树并先序遍历.doc
  11. HDOJ1548(BFS)
  12. odps传大文件到oss上_如何导入数据到odps
  13. 数字图像处理 matlab 报告总结,matlab 数字图像处理实验报告(五份)
  14. 每日一坑:Github配置ssh后,拉代码依旧需要鉴权,且鉴权失败。
  15. 425 Failed to establish connection解决方案
  16. 【CSS】文字超过三行显示省略号...
  17. 人民网_领导留言板data2021年-2022年
  18. 内网搭建maven私库
  19. utils:常见的几种日期格式和转换方法
  20. 水气泵控制原理,三角波发生电路,LM331M/TR芯片,高速运放芯片

热门文章

  1. 飞秋的模拟实现代码,很好很山寨!
  2. 高级程序员要有动态调整责权和成员工作状况的能力
  3. 立足于飞秋和即时通讯软件市场
  4. 用VC写Assembly代码(1)
  5. 获取Windows 系统的内核变量
  6. 第五节:一个令人兴奋的ES6新特性:解构赋值
  7. mysql 传统数据恢复_MySQL误操作后如何快速恢复数据 传统解法 利用binlog2sql快速闪回 常见问题 参考资料...
  8. iphone怎么看wifi密码_无线网密码正确但是手机连接不上wifi怎么回事?
  9. OpenCV中霍夫圆检测
  10. Adobe illustrator 抽丝剥茧选中多个点 - 连载 13