博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python urllib2.urlopen打开中文url的编码处理_Luffy's Space_百度空间
阅读量:7009 次
发布时间:2019-06-28

本文共 1039 字,大约阅读时间需要 3 分钟。

Python urllib2.urlopen打开中文url的编码处理
2010-03-06 15:49

参考文章:

在用urllib2.urlopen(url)时,如果url里面包含中文,则必须对此url进行编码处理,否则会引起UnicodeError。

搜索后找到了相关的处理方法

引用参考文章的:

当处理HTTP链接的时候,链接如果有中文的话,那么发起HTTP链接的时候,一定要先把URL编码,否则就会出现问题。

而在python中,用 urllib2.quote(URL)进入编码和urllib2.unquote(URL) 解码的时候,有一点需要注意:
就是URL字符串不能是 unicode编码,此时必须把URL编码转换成适当的编码,如utf-8或gb2312等。
而python处理编码转换的机制如下:原来编码>>内部编码>>目的编码
python的内部编码是使用unicode来处理的

>>>gb=”中国” #此处为原本gb2312编码

>>>uni=unicode(gb,'gb2312') #把gb2312编码转换成unicode的内部编码
>>>utf=uni.encode('utf-8') #把unicode编码转换成utf-8目的编码

因为中文在URL中进行了url quote处理的,例如:

http://***.com/newsearch/books/?query=你好

实际上的URL是:

http://***.com/newsearch/books/?query=%C4%E3%BA%C3

因此在将url传给urlopen之前,应该对url进行unquote

python 文档中对unqoute的描述为:

Replace %xx escapes by their single-character equivalent.

Example: unquote(‘/%7Econnolly/’) yields ‘/~connolly/’.

综上所述,对url先进行编码上的转换,然后再用unquote处理,就能得到可获取的url了。

我的代码如下:

query=request.GET['query']

url='http://***.com/search/api/books/q=' + query
url=url.encode('utf-8')
url=urllib2.unquote(url)
data=urllib2.urlopen(url)

转载地址:http://zhttl.baihongyu.com/

你可能感兴趣的文章
前端知识点——图片
查看>>
学汉语、来云栖、海外布道阿里云……这位印度架构师不一般
查看>>
240. Search a 2D Matrix II
查看>>
Leaflet-Develop-Guide
查看>>
Iterator图解
查看>>
Linux环境升级node版本
查看>>
磨刀霍霍:爬爬爬爬爬爬虫爬起来~
查看>>
【跃迁之路】【688天】程序员高效学习方法论探索系列(实验阶段445-2019.1.7)...
查看>>
OA管理系统 - SpringBoot + AmazeUi
查看>>
URI 上传中文符
查看>>
Euler 今日问世!国内首个工业级的图深度学习开源框架,阿里妈妈造
查看>>
是时候了解下Travis CI是什么了
查看>>
什么是数据库范式,是否应该严格遵守范式,什么情况下应该不遵守范式?
查看>>
LogParser v0.8.0 发布:一个用于定期增量式解析 Scrapy 爬虫日志的 Python 库
查看>>
MacOS安装git
查看>>
NEO改进协议提案6(NEP-6)
查看>>
iOS补位动画、沙漏效果、移动UITableViewCell、模拟贪吃蛇、拖拽进度等源码
查看>>
webapp字号大小跟随系统字号大小缩放
查看>>
[LeetCode] 430. Flatten a Multilevel Doubly Linked List
查看>>
常用布局
查看>>