关于爬虫中&#开头的编码转换中文以及XPath提取原文的HTML

XPath提取原本Html

在提取页面数据的时候需求是不仅仅提取文本而且还需要当前节点的html文本

from lxml import etree
url = 'http://zujuan.xkw.com/xxsx/zj101446/o2p2/index.htm'
response = requests.get(url)
html = etree.HTML(response.text)
body_node = html.xpath('//body')[0]
# 获取body节点的html文本
# tostring 函数 将节点对象 转换成 二进制文本, 最后需要decode 转换为utf-8
body_html = ertee.tostring(body_node).decode('utf-8')
# 但是发现转换后的文本是这样的
# 
直接写出得数。
10-3=       8+ # 其实这是unicode 编码 &#代表\U 浏览器能识别 # 我们现在需要将这样的编码转换成为正常能阅读的文本 # Python3.5+ import html body_html = html.unescape(body_html) #
直接写出得数。
10-3=\xa0\xa0\xa0\xa0\xa0\xa0 8+4=\xa0\xa0\xa0\xa0\xa0\xa0 9-6=\xa0\xa0\xa0\xa0\xa0\xa0 9-2+4=
8+0=\xa0\xa0\xa0\xa0\xa0\xa0\xa0 15+3=\xa0\xa0\xa0\xa0\xa0 8+7=\xa0\xa0\xa0\xa0\xa0\xa0 7+5+4=
5+6=\xa0\xa0\xa0\xa0\xa0\xa0\xa0 3+9=\xa0\xa0\xa0\xa0\xa0\xa0 18-5=\xa0\xa0\xa0\xa0\xa0 9+6-2=
8+8=\xa0\xa0\xa0\xa0\xa0\xa0\xa0 0-0=\xa0\xa0\xa0\xa0\xa0\xa0 4+7=\xa0\xa0\xa0\xa0\xa0\xa09-3+7=
# 编码转换成功

你可能感兴趣的:(遇到的问题)