python3 爬虫4--解析链接
1.urlparse()
属于urllib.parse
在urlparse世界里面,一个标准的URL链接格式如下
scheme://nrtlooc/path;paramters?query#fragment
所以,一个url='http://www.baidu.com/index.html;user?id=5#comment'
我们使用urlparse的话,就可以被分成6个部分
(scheme='http',netloc='www.baidu.com',path='index.html'paramters='user'.query='id=5',fragment='comment')
具体操作如下:
res=urlparse('https://www.baidu.com/baidu?wd=query&tn=monline_dg&ie=utf-8'
)
print(res)
urlparse还有带参数的是使用方法
res=urlparse(urlstring,scheme=' ',allow_fragment=True)
scheme是默认的协议,如果urlstring没有带协议,则使用scheme中的协议,若是有,则仍然使用urlstring中协议
allow_fragment即是否忽略fragment,如果是False,fragment就被解析为path、paramenters或者query中的一部分
2,urlunparse()
属于urllib.parse
正如其名字所示,ulrunparse()是urlparse()的逆过程
例如:data=['http','www.baidu.com','index.html','user','a=6','comment']
print(urlunparse(data))
这样就完成了urlstring的构造
3urlsplit()
from urllib.parse import urlsplit
与urlparse类似,但urlsplict把urlstirng分割成5个部分,其中少了paramters
res=urlsplict('http://www.baidu.com/index.html;user?id=5#comment
')
print(res)
4urlunsplit()
用法与urlunparse()类似
5urljoin()
属于urllib.parse
urljoin()也是一种生成urlstring的方式,这种生成方法是提供两个链接,分别是base_url,和新链接,分析base_url中的scheme,netloc,path这三个部分,然后对新链接缺失的部分进行补充,新链接里面若是有,则不补充,不提换,最后返回新链接,举个例子
print(urljoin('http://www.baidu.com',‘wd=query&tn=monline_dg&ie=utf-8‘))
返回结果是:
http://www.baidu.com/wd=query&tn=monline_dg&ie=utf-8
6urlencode()
from urllib,parse import urlencode
可以将字典类型转换为url参数举例来说
param={'name':'lihua','age':'23'}
base_url='http://www.baidu.com'
url=base_url+urlencode(param)
print(url)
7parse_qs()
parse_qs()是parse_encode()的逆过程(为什么名字的区别这么大,我也是不得其解)
from urllib.parse import parse_qs
query='wd=query&tn=monline_dg&ie=utf-8'
print(parse_qs(query))
输出结果是:{'tn': ['monline_dg'], 'wd': ['query'], 'ie': ['utf-8']}
这样就转换称为字典类型了
8pars_qsl()
from urllib.pase import parse_qsl:将参数转换成为元组组成的列表
query='wd=query&tn=monline_dg&ie=utf-8'
print(parse_qsl(query))
输出结果:[('wd', 'query'), ('tn', 'monline_dg'), ('ie', 'utf-8')]
9quote
quote()方法可以将内容转换为URL编码格式,有时候URL带中文可能导致乱码,这样就需要quote
from urllib。parse import quote
keyword='美女'
url='https://www.baidu.com/s?wd='+quote(keyword)
print(url)
输出结果:https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3
10unquote()
对URL进行解码
from urllib.parse import unquote
url='https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3'
print(unquote(url))
输出结果:https://www.baidu.com/s?wd=美女
就可以实现解码
python3 爬虫4--解析链接的更多相关文章
- python爬虫之解析链接
解析链接 1. urlparse() & urlunparse() urlparse() 是对url链接识别和分段的,API用法如下: urllib.parse.urlparse(urlstr ...
- python3爬虫中文乱码之请求头‘Accept-Encoding’:br 的问题
当用python3做爬虫的时候,一些网站为了防爬虫会设置一些检查机制,这时我们就需要添加请求头,伪装成浏览器正常访问. header的内容在浏览器的开发者工具中便可看到,将这些信息添加到我们的爬虫代码 ...
- python3爬虫系列19之反爬随机 User-Agent 和 ip代理池的使用
站长资讯平台:python3爬虫系列19之随机User-Agent 和ip代理池的使用我们前面几篇讲了爬虫增速多进程,进程池的用法之类的,爬虫速度加快呢,也会带来一些坏事. 1. 前言比如随着我们爬虫 ...
- python3爬虫(4)各种网站视频下载方法
python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...
- 笔趣看小说Python3爬虫抓取
笔趣看小说Python3爬虫抓取 获取HTML信息 解析HTML信息 整合代码 获取HTML信息 # -*- coding:UTF-8 -*- import requests if __name__ ...
- 爬虫Larbin解析(一)——Larbin配置与使用
介绍 功能:网络爬虫 开发语言:c++ 开发者:Sébastien Ailleret(法国) 特点:只抓取网页,高效(一个简单的larbin的爬虫可以每天获取500万的网页) 安装 安装平台:Ubun ...
- python爬虫数据解析之BeautifulSoup
BeautifulSoup是一个可以从HTML或者XML文件中提取数据的python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. BeautfulSoup是python爬虫三 ...
- Python3爬虫系列:理论+实验+爬取妹子图实战
Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...
- Python3爬虫(十八) Scrapy框架(二)
对Scrapy框架(一)的补充 Infi-chu: http://www.cnblogs.com/Infi-chu/ Scrapy优点: 提供了内置的 HTTP 缓存 ,以加速本地开发 . ...
随机推荐
- 【故障公告】k8s 开船记:增加控制舱(control-plane)造成的翻船
春节期间我们更换了 kubernetes 生产集群,旧集群的 kubernetes 版本是 1.17.0,新集群版本是 1.23.3,新集群上部署了 dapr,最近准备将更多独立部署的服务器部署到 k ...
- 华为eNSP的防火墙(USG6000V)如何使用Web界面登入
文章目录 华为eNSP的防火墙(USG6000V)如何使用Web界面登入 前言 一.使用步骤 1.导入USG6000V的镜像包 总结 前言 在华为的eNSP的模拟器上如何使用Web界面去管理与使用模拟 ...
- [GAMEDEV] 个人开发如何找到合适的图片素材?
1. 起因 起因是想找一些UI设计方面的素材(具体地说,类似于Web或者App上一些按钮/页签/进度条等元素),用到游戏GUI中来,毕竟扁平化的网页设计还是很清爽的. 本以为这方面的素材会比游戏中的图 ...
- kubernetes用户使用token安全认证教程
kubernetes server account的token很容易获取,但是User的token非常麻烦,本文给出一个极简的User token生成方式,让用户可以一个http请求就能获取到. to ...
- 聊聊你对AQS的理解
场景引入 面试官上来就一句,谈谈你对AQS的理解,大家心里可能收到了1W点伤害,AQS是什么,可能连全称都不知道,所以下面让我们聊聊AQS. 以ReentrantLock来介绍一下AQS 在java中 ...
- POJ1990 题解
题目大意:有若干头牛,每个牛有一个音量值,两头牛能互相听见对方说话需要发出两头牛中音量值较大者的音量*两头牛的距离的音量,求使任意两头牛都互相听见对方需要发出的音量总和.每头牛的音量值可以相同,但坐标 ...
- httpHelper 从URL获取值
/// <summary> /// 从URL获取值(字符串) /// </summary> public static string GetValueFromUrl(strin ...
- Go基础知识梳理(二)
Go基础知识梳理(二) 简单函数的定义 //有参数有返回值 func sum(a int, b int) int { return a + b } //无返回值 func sum(a int, b i ...
- 01-RocketMQ介绍
一.MQ介绍 1.什么是MQ?为什么要用MQ? MQ:MessageQueue,消息队列. 队列,是一种FIFO 先进先出的数据结构.消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进 ...
- Visual Studio双击打开项目而不是项目属性文件
从VS2019版本就默认勾选了这个,每次打开都是到属性文件,这个根本用不到,点击小三角又比较麻烦,不知道为啥微软给了这个默认功能 VS2022 Preview也是,默认勾选 勾选如下即可: