爬虫部分解码异常
response.content.decode() # 默认使用 utf-8 出现解码异常
以下是设计的通用解码
通过 text 获取编码
# 通过 text 获取编码 import requests from lxml import etree def public_decode(): headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36' } response = requests.get('https://blog.csdn.net/a13951206104', headers=headers) html = etree.HTML(response.text) # response.text 能自动获取编码, 大多乱码 _charset = html.xpath('//@charset') or [] if _charset: encode_content = response.content.decode(_charset[0].strip().lower(), errors='replace') # 如果设置为replace,则会用?取代非法字符; return {'response_text': encode_content, "response_obj": response} for _charset_ in ['utf-8', 'gbk', 'gb2312'] # 国内主要这3种: if '�' not in response.content.decode(_charset_, errors='replace'): return {'response_text': response.content.decode(_charset_, errors='replace'), "response_obj": response} else: # 默认还得是 utf-8 return {'response_text': response.content.decode('utf-8', errors='replace'), "response_obj": response}
通过数据 来解编码(推荐)
def public_decode(response): headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36' } response = requests.get('https://blog.csdn.net/a13951206104', headers=headers) html = etree.HTML(response.text) # 不希望抓下来的数据中有非法字符 item = dict() result = None for _charset_ in ['utf-8', 'gbk', 'gb2312']: if response: result = response.content.decode(_charset_, errors='replace') item['content'] = html.xpath('//*[@id="content"]') if '�' not in result['content'].strip(): result =response.content.decode(_charset_, errors='replace') break if not result: # 默认 utf-8 result = response.content.decode(_charset_, errors='replace')
errors=‘replace' 使解码不报异常, 然后把几个常用的编码一个个试下, 最后要看落下来的数据, 所以最好拿数据 去获取合适的编码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍解决pyshp UnicodeDecodeError的问题,包括了解决pyshp UnicodeDecodeError的问题的使用技巧和注意事项,需要的朋友参考一下 用最新版本(2.1.0)的pyshp解析shp文件的records时: 如果records里面含有中文字段,那么就会报错: 这个是编解码的问题,解决方法是把版本降到1.2.12就可以了,虽然records里面的中文字段还
> 环境 幻影JS2。1.1;窗口10;硒-3.8.0;蟒蛇3 代码 问题 UnicodeDecodeError:'utf-8'编解码器无法解码位置2的字节0xbd:无效的开始字节 细节 回溯(最近一次调用):文件“d:/devtools/phantomjs-2.1.1-windows/bin/IndustryLeaderSpider.py”,第20行,在browser=webdriver中。Ph
本文向大家介绍解决python3输入的坑——input(),包括了解决python3输入的坑——input()的使用技巧和注意事项,需要的朋友参考一下 如下所示: a,b,c,d = input() 很简单的代码,如果输入为 1 -1 -2 3 结果会报错,原因在于input函数会将你的输入作为python脚本运行,那么输入就变成了 1-1 -2 3,即0 -2 3 结果当然是错误的了,解决办法就
问题内容: 如何解决? 在其他基于python的静态博客应用中,中文帖子可以成功发布。像这个程序:http : //github.com/vrypan/bucket3。在我的网站http://bc3.brite.biz/中,中文帖子可以成功发布。 问题答案: tl;dr / quick fix 不要对Willy Nilly进行解码/编码 不要以为你的字符串是UTF-8编码的 尝试在代码中尽快将字符
本文向大家介绍Centos 升级到python3后pip 无法使用的解决方法,包括了Centos 升级到python3后pip 无法使用的解决方法的使用技巧和注意事项,需要的朋友参考一下 一. 问题 pip无法使用. 二. 系统环境 三. 解决方法 设置软连接. 1.查找pip所在位置 2.设置软连接 语法参见: 检测一下效果: 以上这篇Centos 升级到python3后pip 无法使用的解决方
本文向大家介绍解决virtualenv -p python3 venv报错的问题,包括了解决virtualenv -p python3 venv报错的问题的使用技巧和注意事项,需要的朋友参考一下 在阿里云服务器上,用virtualenv创建虚拟环境时,报了个错误 看到HTTPError: 404 Client Error: Not Found for url: http://mirrors.ali