用于从HTML页面检测和提取列表数据的Python库
项目描述
MDR是一个从HTML页面检测和提取列表数据的库。它基于从网页中查找和提取数据记录实现,但将相似度改为由基于部分树对齐的Web数据提取和基于树编辑距离匹配的自动包装器自适应提出的树对齐。
要求
numpy和scipy必须安装以构建此包。
用法
检测列表数据
MDR假设数据记录接近的元素具有最多的文本节点
[1]: import requests [2]: from mdr.mdr import MDR [3]: mdr = MDR() [4]: r = requests.get('http://www.yelp.co.uk/biz/the-ledbury-london') [5]: candidates, doc = mdr.list_candidates(r.text.encode('utf8')) ... [8]: [doc.getpath(c) for c in candidates[:10]] ['/html/body/div[2]/div[3]/div[2]/div/div[1]/div[1]/div[2]/div[1]/div[2]/ul', '/html/body/div[2]/div[3]/div[2]/div/div[1]/div[2]', '/html/body/div[2]/div[3]/div[2]/div/div[1]/div[2]/div[2]', '/html/body/div[2]/div[3]/div[1]/div/div[4]/div[1]/div/div[1]/div/div[2]/div[1]/div[1]/div', '/html/body/div[2]/div[3]/div[1]/div/div[4]/div[2]/div/div[3]', '/html/body/div[2]/div[3]/div[1]/div/div[4]/div[1]/div/div[2]/ul/li[2]/div/div/ul', '/html/body/div[2]/div[3]/div[2]/div/div[1]/div[1]/div[2]/div[1]', '/html/body/div[2]/div[3]/div[2]/div/div[1]/div[2]/div[2]/div[1]/table/tbody', '/html/body/div[2]', '/html/body/div[2]/div[4]/div/div[1]']
提取数据记录
MDR可以通过在特定候选DOM树下使用树匹配来找到重复模式。然后,它将从所谓的“种子元素”到一个来自不同DOM树的匹配元素列表的映射。
与注释(可选)一起使用
您可以使用任何您喜欢的工具(例如scrapely)对种子记录进行注释,然后mdr将能够找到页面中的其他数据。
例如,您可以在这里找到这个演示页面。第一行的彩色数据是手动注释的,其余的是由MDR提取的。
许可证
MIT