在ruby中找到网页中的重复模式

时间:2011-06-06 17:00:35

标签: ruby regex search html-parsing pattern-matching

我试图找到一种在网页中查找重复模式的方法,以便我可以将内容提取到我的数据库中。

编辑:我不知道重复模式是什么,所以我不能只通过正则表达式或其他东西搜索给定的模式。

例如,如果您有10个销售汽车的网站但网站都不同,那么在每个网站上查看汽车都会以重复的方式列在该网站的网页上。

其他网站将以不同的方式列出,但每个网站都有重复的模式。

有谁知道这种事情是怎么回事,或有任何经验?

我喜欢红宝石所以如果有人知道或者知道任何可能帮助我的宝石/宝石,我希望能用红宝石吗?

2 个答案:

答案 0 :(得分:2)

Rick,机器模式匹配是一个复杂的主题,而不是你会在Ruby上找到一个开箱即用的好库。

Kyle的回答是一个开始,一旦你获得Ruby的页面,典型的技术是xpath或“XML路径语言”。

使用Xpath,您可以编写简单的选择器来提取与模式匹配的每个项目,例如,HTML文档中的每个链接可能是//a,每个h1都是//h1,直接在div中的每个图像,其中图像具有“car”类,如下所示://div/image[class="car"]

XPath的结果是每个项目的可枚举列表,然后您可以查询子元素,获取元素的content(),并构建关系以提取所需的数据。

Ruby的首选库名为 Nokogiri ,并且是avaiable as a gem - 直接文档有点弱,但如果您知道要查找的内容,那么它们都会被覆盖。

Ruby的一些库结合了爬行,以及作为Nokogiri文档访问底层HTML / XML的简单方法,其中一个例子是Anemone,它是“用于在Ruby中构建Web蜘蛛的框架” - 和我可以非常高兴地推荐它。

答案 1 :(得分:-1)

在Ruby中,如果要获取网页文本,您只需使用Net::HTTP命名空间即可。 get方法返回网页的字符串表示。

Net::HTTP.get 'http://www.target-site.com', '/target-page.html'

之后你可能会想要使用某种XML Parser来制作页面模型并在其上导航。我听说过有关Hpricot的好消息。