解决PyCharm下python使用XPath解析html,获取文本时中文乱码问题
2018-11-11 19:36
1176 查看
解决PyCharm下python使用XPath解析html,获取文本时中文乱码问题
最近在学习XPath解析库,但是获取中文文本时总是乱码,网上看了些教程,然并卵,最后只好自己解决:
文本文件html.txt如下:
<p class="name"> <a href="/films/1297" title="肖申克的救赎" data-act="boarditem-click" data-val="{movieId:1297}">肖申克的救赎</a> </p>
源文件test.py如下:
from lxml import etree # 此处采取直接读取文本进行解析的方法 html = etree.parse('html.txt', etree.HTMLParser()) result = html.xpath('//a/text()') print(result)
运行结果(乱码)如下:
['ФÉê¿ËµÄ¾ÈÊê'] # html.txt编码为:GBK时的结果 ['è\x82\x96ç\x94³å\x85\x8bç\x9a\x84æ\x95\x91èµ\x8e'] # html.txt编码为:UTF-8时的结果
解决办法01
先使用open()函数读取html.txt,再将字符串传递给etree.HTML()
源文件test.py如下:
from lxml import etree f = open('html.txt', 'r') # 如果文件编码为UTF-8, 记得添加参数:encoding='utf8' text = f.read() html = etree.HTML(text, etree.HTMLParser()) result = html.xpath('//a/text()') print(result)
运行结果如下:
['肖申克的救赎']
解决办法02(推荐)
为解析器etree.HTMLParser()传递一个参数:encoding=‘gbk’,记得,此处编码与文件html.txt一致
推荐该方法,简洁
源文件test.py如下:
from lxml import etree html = etree.parse('html.txt', etree.HTMLParser(encoding='gbk')) result = html.xpath('//a/text()') print(result)
运行结果如下:
['肖申克的救赎']
结语
我正在看的那本书根本就没有使用etree.HTMLParser(encoding=‘gbk’),一律使用etree.HTMLParser()默认版本,多亏了PyCharm的补全功能,让我看见了etree.HTMLParser()的参数列表,第一个参数就是:encoding=None,然后试了下果然解决了中文乱码问题!
阅读更多相关文章推荐
- 使用Formail发送html格式的中文主题邮件,解决乱码问题等
- VC轻松解析XML文件--CMarkup使用方法(解决解析中文字符出现乱码问题)
- 解决使用FusionCharts以后从后台获取数据中文乱码的问题
- 解决python使用open打开文件中文乱码的问题
- python使用requests爬取网页,遇到中文出现乱码的编码问题及解决
- 使用WebBrowser获取网页源代码,解决中文乱码问题
- PHP使用DOM LoadHTML()解析的中文乱码问题
- 49 Three.js使用THREE.TextGeometry创建三维文本解决中文乱码的问题
- 使用WebBrowser获取网页源代码,解决中文乱码问题
- Python 3下使用Matplotlib工具画图,中文显示乱码的问题解决(修改配置文件)
- python获取html编码GB2312中文乱码的问题
- spring boot新手教程之使用FastJson解析JSON数据以及解决返回中文乱码问题
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- 前台页面使用utf-8编码,url中包含中文参数时后台获取参数乱码问题解决
- python读取\t\n的文件转换成html表格发送邮件(解决中文乱码问题)
- JSP中获取HTML中的中文内容是乱码的解决方法---开发中遇到的问题
- 使用CInternetSession获取utf-8页面中文乱码问题解决方法
- VC轻松解析XML文件--CMarkup使用方法(解决解析中文字符出现乱码问题)
- Python使用SQLAlchemy,并且解决了插入中文乱码问题
- python使用requests爬取网页,遇到中文出现遇到中文出现乱码的编码问题及解决乱码的编码问题及解决