我试图找到一种在网页中查找重复模式的方法,以便我可以将内容提取到我的数据库中。
编辑:我不知道重复模式是什么,所以我不能只通过正则表达式或其他东西搜索给定的模式。
例如,如果您有10个销售汽车的网站但网站都不同,那么在每个网站上查看汽车都会以重复的方式列在该网站的网页上。
其他网站将以不同的方式列出,但每个网站都有重复的模式。
有谁知道这种事情是怎么回事,或有任何经验?
我喜欢红宝石所以如果有人知道或者知道任何可能帮助我的宝石/宝石,我希望能用红宝石吗?
答案 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
的好消息。