algorithm - 从字符串集合中推断模板

标签 algorithm string screen-scraping pattern-matching information-retrieval

我正在为一组网站编制索引,这些网站有大量页面(数千万),这些页面是从少量模板生成的。我正在寻找一种算法来学习生成页面的模板并将模板与页面匹配,这样我只需要存储可变部分和每个获取页面的模板引用。

该算法不需要产生尽可能大的压缩,但它应该在看到更多页面时变得更好,并且在面对使用以前未见过的模板生成的页面时应该表现得优雅。

我将不胜感激任何对文献或现有图书馆的引用。

我可以对成批页面运行通用压缩算法。我不想这样做的原因是我感兴趣的数据将位于页面的可变部分,因此模板方法允许我在不解压缩的情况下检索它。我希望能够在需要时重新创建整个页面,以确保 future 的可复制性并防止我的抓取程序中出现错误。

最佳答案

在某些圈子里,这个问题被称为“HTML Wrapper Induction”或“Wrapper Learning”。在这篇论文中,您可以找到一个有趣的——尽管是旧的——评论以及一些商业应用程序的链接:http://www.xrce.xerox.com/Research-Development/Historical-projects/IWRAP-Intelligent-Wrapper-Learning-Tools )

您可能对此 Python 库感兴趣:http://code.google.com/p/templatemaker/ “好吧,假设你想从一堆使用相同模板的网页中获取原始数据——例如 Yelp.com 上的餐厅评论。你可以给 templatemaker 任意数量的 HTML 文件,它会创建用于创建这些文件的"template"。” ( http://www.holovaty.com/writing/templatemaker/ )

此外,另一个名为 scrapy 的 Python 库似乎有一个包装归纳库:http://dev.scrapy.org/wiki/Scrapy09Changes#Addedwrapperinductionlibrary

不过,我不能透露太多有关算法的信息。如果您想自己实现一个,这看起来是一个很好的起点:http://portal.acm.org/citation.cfm?id=1859138它同时具有包装器归纳和在线学习功能,因此您可以在继续抓取过程时开始对页面进行分类。

关于algorithm - 从字符串集合中推断模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6261714/

相关文章:

c++ - 什么是 c++11/14/17 等同于 ltoa/itoa 的 C 函数?

mysql - 如何存储整个网页供以后解析?

c - 在c程序中用%20替换空格

c# - n个连续整数的随机排列

java - 检查干草堆是否包含一组针的最快方法

ruby - 从存储在带有转义字符的变量中的字符串创建正则表达式 (Ruby)

c - 如何从字符串中提取实数?

python - 如何从Python表中抓取特定的tr或td

python - 屏幕抓取 Facebook 中的好友列表,适用于 Python

algorithm - 包含从 1 到 N 的所有数字的最小多集