
爬取网页时调用tostring()中文乱码("&#数字;")解决方案
发布日期:2021-05-07 19:49:21
浏览次数:12
分类:技术文章
本文共 1113 字,大约阅读时间需要 3 分钟。
- 出现乱码的代码
import requestsimport refrom lxml import etreewith open('real_case.html', 'r', encoding='utf-8') as f: c = f.read()tree = etree.HTML(c)table_element = tree.xpath("//div[@class='table-box'][1]/table/tbody/tr")#正则表达式过滤掉<>pattern1_attrib = re.compile(r"<.*?>")for row in table_element: try: td1 = row.xpath('td')[0] #调用tostring()后出现乱码 s1 = etree.tostring(td1).decode('utf-8') s1 = pattern1_attrib.sub('', s1) print(s1) except Exception as error: pass
乱码:

- 修正过后的代码 引入HTML包,使用unescape()方法
import requestsimport refrom lxml import etree#引入HTML包import htmlwith open('real_case.html', 'r', encoding='utf-8') as f: c = f.read()tree = etree.HTML(c)table_element = tree.xpath("//div[@class='table-box'][1]/table/tbody/tr")pattern1_attrib = re.compile(r"<.*?>")for row in table_element: try: td1 = row.xpath('td')[0] s1 = etree.tostring(td1).decode('utf-8') s1 = pattern1_attrib.sub('', s1) # unescape() 此函数使用HTML5标准定义的规则将字符转换成对应的unicode字符。 s1 = html.unescape(s1) print(s1) except Exception as error: pass
结果:

发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月15日 11时59分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
文件md5怎么会变化
2019-03-04
好玩的editText
2019-03-04
自动安装服务2
2019-03-04
android 用action拦截打电话界面
2019-03-04
错误: 编码GBK的不可映射字符
2019-03-04
Python-Url编码和解码
2019-03-04
2019年一个程序员的回顾与成长计划
2019-03-04
vue if else用法。
2019-03-04
vue 官方实例教程 markdown demo
2019-03-04
Python数据类型 列表、元组、集合、字典的区别和相互转换
2019-03-04
宝塔配置404 502页面
2019-03-04
Mac OS X 下 su 命令提示 sorry 的解决方法
2019-03-04
vue-router 缓存路由组件对象
2019-03-04
js中事件捕获和事件冒泡(事件流)
2019-03-04
js的各种数据类型判断(in、hasOwnProperty)
2019-03-04
严格模式、混杂模式与怪异模式
2019-03-04
一篇文章带你搞定 Java 中字符流的基本操作(Write / Read)
2019-03-04