1. 问题描述
利用机器学习方法实现Web信息抽取,有时需要提取HTML元素的Xpath。
2. 解决方案
可以利用python的lxml
库可以实现这个功能。
第一步:清洗数据。
现实情况需要考虑很多特殊情况,这里简单示例。
from lxml import etree
from lxml.html.clean import Cleaner
cleaner = Cleaner()
cleaner.javascript = True
cleaner.page_structure = False
cleaner.style = True
base_url = 'http://xxxxxxxxxx'
# 需要提前下载一个网页,并保存为本地文件test.html
with open('./test.html', 'r', encoding='utf-8') as f:
html_str = f.read()
x = lxml.html.fromstring(html_str, base_url=base_url)
etree_root = cleaner.clean_html(x)
第二步:构造dom树。
dom_tree = etree.ElementTree(etree_root)
第三步:便利dom树的所有节点。
for e in dom_tree.iter():
xpath = dom_tree.getpath(e)
print(xpath)
这样就可以获取HTML所有元素的Xpath路径表达式了。