Python requests获取网页标题源码出现乱码如何改,pythonrequests,def getHtml(
Python requests获取网页标题源码出现乱码如何改,pythonrequests,def getHtml(
def getHtml(url,timeout=20): try: headers = { 'Accept-Language': 'zh-cn', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/4.0 (compatible MSIE 6.00 Windows NT 5.1 SV1)', } r = requests.get(url,headers=headers,timeout=timeout) html = r.text return html except Exception,ex: return Nonesoup = BeautifulSoup(getHtml())print soup.title
以上代码,如何改进,才能在获取任何网页标题的时候,不至于乱码。
注:提取部分网页的标题的时候会直接乱码显示。如何改进,才能通用?
参考一下这个头文件
,试试
通用比較困難,有些不給編碼又使用奇怪編碼的網頁很難確定用的什麼。
不過只要知道網頁的編碼,在讀取的時候選區合適的解碼器就好了。
查看一下网页的编码,比如是gbk的话,就r.encoding='gbk'。一下内容摘自requests文档
Requests会自动解码来自服务器的内容。大多数unicode字符集都能被无缝地解码。
请求发出后,Requests会基于HTTP头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Requests会使用其推测的文本编码。你可以找出Requests使用了什么编码,并且能够使用 r.encoding 属性来改变它:
先看看是不是编码问题,如果不是的话,建议再看看是不是gzip加密了,如果是的话需要解密,Python有自带的gzip库,
import gzip
g = gzip.open(path, 'rb')
然后对象g就能当普通文件对象进行操作了(虽然type不是'file')
有个 chardet 用来检测编码的,如果安装了,BeautifulSoup 貌似会自动调用这个库来检测编码并 decode 成 unicode。
对了,上面是从网上看的。
总之拿到文件编码就好办了。
with open('r.txt','w',encoding='utf-8') as ff:
ff.write(r.text)
编橙之家文章,
相关内容
- python爬虫爬取的钢页直接生成Excel文件还是存入Mysql更好
- Mac上python3.5的pycharm开发环境配置问题求解答,python3.
- Python简化代码,判断是否包含指定字符串的代码简化方法
- Python与android应用实现实时消息推送的方法是?,pythona
- python utf-8编码被识别为gb2312求解决方法,pythonutf-8,# c
- Python备份离线静态站点方法是什么?,python离线,有时候
- 写一个php框架怎么做到?,php框架做到,删了吧 我只是
- 请问Beautifulsoup抓取select标签中option文本方法是什么,
- Python运维方向基本工作内容是什么,python运维工作内容
- Python爬虫完成js页面内容抓取方案是怎么样的,pythonj
评论关闭