爬虫【3】URL地址编码
爬虫【3】URL地址编码
爬虫回顾:
- 爬虫【1】打开网站,获取信息
- 爬虫【2】重构UserAgent
为什么要进行编码?
在百度中搜索:b站你可以看到上方的url是这样的
可以看到bai.com/s?
之后还有很多以&相连的东西,大部分是我们用不到打,但是可以看到一个wd=b站
把其他的东西删去只留下https://www.baidu.com/s?wd=b站
还是可以正常访问的。但是如果你去复制的话得到的是https://www.baidu.com/s?wd=b%E7%AB%99
可以知道url是不支持中文的会对其进行编码,你在网页可以看到只是因为浏览器给你解码了。
当我们需要获取百度搜索的b站的内容时就需要对我们的url也进行编码了
URL地址编码模块
模块名及导入
- 模块
# 模块名
urllib.parse# 导入
import urllib.parse
from urllib import parse
- 作用
给URL地址中查询参数进行编码
编码前:https://www.baidu.com/s?wd=美女
编码后:https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3
常用方法
urllib.parse.urlencode({dict})
- URL地址中一个查询参数
# 查询参数:{'wd' : '美女'}
# urlencode编码后:'wd=%e7%be%8e%e5%a5%b3'# 示例代码
query_string = {'wd' : '美女'}
result = urllib.parse.urlencode(query_string)
# result: 'wd=%e7%be%8e%e5%a5%b3'
- URL地址中多个查询参数
from urllib import parse
params = {'wd' : '美女','pn' : '50'
}
params = parse.urlencode(query_string_dict)
url = 'http://www.baidu.com/s?{}'.format(params)
print(url)
- 拼接URL地址的3种方式
# 1、字符串相加baseurl = 'http://www.baidu.com/s?'params = 'wd=%E7XXXX&pn=20'url = baseurl + params# 2、字符串格式化(占位符)params = 'wd=%E7XXXX&pn=20'url = 'http://www.baidu.com/s?%s'% params# 3、format()方法url = 'http://www.baidu.com/s?{}'params = 'wd=#E7XXXX&pn=20'url = url.format(params)
- 练习
在360中输入要搜索的内容,把响应内容保存到本地文件
这年头,百度搜索和bing搜索这种简单的小爬虫都用不了了,无奈欺负欺负360搜索吧
from urllib import parse
from urllib import requestdef get_url(word):baseurl = 'https://www.so.com/s?'parses = {'q': word}parses = parse.urlencode(parses)url = baseurl + parsesreturn urldef write_html(url, word):print(url)headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'}req = request.Request(url, headers=headers)res = request.urlopen(req)html = res.read().decode('utf-8')filepath = word + '.html'with open(filepath, 'w',encoding='utf-8') as f:f.write(html)if __name__ == '__main__':word = input('请输入你想搜索的内容: ')url = get_url(word)write_html(url,word)
爬虫【3】URL地址编码相关推荐
- i春秋url地址编码问题
i春秋学院是国内比较知名的安全培训平台,前段时间看了下网站,顺便手工简单测试常见的XSS,发现网站搜索功能比较有意思. 其实是对用户输入的内容HTML编码和URL编码的处理方式在这里不合理,提交到乌云 ...
- java url地址编码转换_java url编码转换
[转载于: 因为在做链接来源统计的时候需要把 http://www.baidu.com/baiduword=%D6%D0%B9%FA%B4%F3%B0%D9%BF%C6%D4%DA%CF%DF%C8 ...
- java http url 编码_Java中的HTTP URL地址编码
java.net.URI类可以帮助;在URL的文档中找到 Note, the URI class does perform escaping of its component fields in ce ...
- python网络爬虫实列——站长之家url解码编码
爬虫实列--站长之家url解码编码 利用urllib可以做一些网页在线翻译,在线解码之类的实列. 1. 这是网站 2.找到所需要的请求头文件 找到请求网址,明确请求方法(详情请百度get请求与post ...
- 把url地址复制到粘贴板上_写个简单的python爬虫爬取堆糖上漂亮的小姐姐
简单的爬虫入门实战 最近刚学了python的爬虫,刚好可以用来爬取漂亮的图片作为壁纸,网上美图网站有很多,比如:花瓣,堆糖.它们请求图片数据的方式差不多类似,都是通过用户不断下滑加载新的图片,这种请求 ...
- Urlencode编码对HTTP的URL地址的作用的探究(20210519更新,最终结论得出,XSS相关)
本文要点 在游览器地址栏中输入包含特定字符的URL地址时,部分字符,例如大括号"{}"会被URLencode,且不同游览器的行为并不一致. 本文根据相关文档,分析了URI的结构与格 ...
- php b64encode,[转]PHP base64_encode 在URL地址参数编码上使用
因为我使用公钥,使用php的 openssl 加密之后的资料 base64_encode()字符串,然后放入请求 url 中当作参数,urlencode(base64_encode()),然后用 ur ...
- 洗礼灵魂,修炼python(56)--爬虫篇—知识补充—编码之url编码
其实在最前面的某一篇博文里,是绝对提过编码的,有ASCII,有UTF-8,有GB2312等等,这些我绝对说过的. url编码 首先,Http协议中参数的传输是"key=value" ...
- python 乱码问题(编码url地址,python中open中文图片)
首先是解析url地址 url地址形如下面的格式,%E4%B8...... 通过urllib.unquote()解析 我这串乱码的意思是:%E4%B8%AD%E6%96%87 = 中文 i_path = ...
最新文章
- Android系统源码导入Android studio
- 常用git命令思维图
- 650 storm 铃木v_铃木公升级V缸拉力V-strom 1050国内公布!高配版预售价14.98万
- SQLServer 常见高CPU利用率原因
- LINQ to SQL: DataContext.SubmitChanges() 失效问题
- 【Linux】一步一步学Linux——test命令(252)
- 关于Visual Studio 当前不会命中断点.还没有为该文档加载任何符号的解决方法
- C++ 复制字符串/字符数组
- 爬虫工具:虚拟机Selenium和PhantomJS,ChromeDriver 镜像安装教程
- 【OpenCV】OpenCV实战从入门到精通之 -- 输入输出XML和YAML文件详解
- bat脚本交互输入_windows 10 如何设定计划任务自动执行 python 脚本?
- webpack 样式表抽离成专门的单独文件并且设置版本号
- v-ray 5.0 渲染器参数说明
- 鸿蒙系统图标大小怎么调节,华为手机桌面图标大小怎么调?用华为手机的朋友这些技巧需要了解...
- 趣味编程入门 Scratch 开发跳一跳小游戏-邵立志-专题视频课程
- UMTS移动通信技术
- 高等数学:第三章 微分中值定理与导数的应用(3)泰勒公式
- 十年一觉程设梦[完整版]
- c语言json使用,cJSON使用(二)
- single crop和muti-crop