从html页面检测和提取列表数据的python库

mdr的Python项目详细描述


https://travis-ci.org/scrapinghub/mdr.svg?branch=master

mdr是一个从html页面检测和提取列表数据的库。它基于Finding and Extracting Data Records from Web Pages实现,但是 将相似度更改为由Web Data Extraction Based on Partial Tree AlignmentAutomatic Wrapper Adaptation by Tree Edit Distance Matching提出的树对齐。

需要

^必须安装{tt1}$和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)来注释seed记录,然后mdr将能够在页面中找到其他数据。

你可以找到这个演示页here。第一行的彩色数据由人工标注,其余的由mdr提取。

作者

彭泰瑞,pengtaoo@gmail.com>;

许可证

麻省理工学院

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何获得@sign,以便在Java代码中键入@override?   java Facebook登录不起作用,我忘了什么?   json如何在java中从MongoDB Atlas获取特定字段?   java如何在Android上的JNI中实现委托/协议(在iOS上)?   java为什么这个循环多次的程序在循环后有一个“println”时需要花费时间?   java无法使组合框正常工作   JavaCQ5。如何为作者显示列表发布者?版本5.5   java我可以要求泛型参数具有泛型参数吗?   JavaOKHTTP无法获取整个JSON   数组Java:用字符减去字符意味着什么?   java为什么Eclipse content assist无法从部分方法名生成方法存根?   java使用线程在Android Studio中一次加载一个多位图   java遍历二叉树并返回一个值