簡體   English   中英

在 ruby 的網頁中查找重復模式

[英]find repeat patterns in webpages in ruby

我正在嘗試找到一種在網頁中查找重復模式的方法,以便我可以將內容提取到我的數據庫中。

編輯:我事先不知道重復模式是什么,所以我不能只通過正則表達式或其他東西搜索給定的模式。

例如,如果您有 10 個銷售汽車的站點,但站點都不同,則在每個站點上查看汽車在 html 中以重復方式在該站點的頁面下方列出。

其他站點將以不同的方式列出,但每個站點都有重復的模式。

有誰知道怎么做,或者有過這種事情的經驗嗎?

我喜歡 ruby 所以希望在 ruby 中做到這一點,如果有人擁有或知道任何可以幫助我的庫/寶石?

Rick,機器模式匹配是一個復雜的話題,並不是你可以在 Ruby 上找到開箱即用的好庫。

凱爾的回答是一個開始,一旦您獲得帶有 Ruby 的頁面,典型的技術就是xpath或“XML 路徑語言”。

使用 Xpath 您可以編寫簡單的選擇器來提取與模式匹配的每個項目,例如,HTML 文檔上的每個鏈接可能是//a ,每個h1將是//h1 ,並且每個圖像都直接在 div 中,其中圖像有 class “汽車” 將類似於: //div/image[class="car"]

XPath 的結果是每個項目的可枚舉列表,然后您可以查詢子元素,獲取元素的content() ,並建立關系以提取您需要的數據。

Ruby 的首選庫稱為Nokogiri ,可以作為 gem 使用- 直接文檔有點薄弱,但如果您知道要查找什么,它就會全部覆蓋在那里。

Ruby 的一些庫結合了爬取,以及以 Nokogiri 文檔形式訪問底層 HTML/XML 的簡單方法,例如Anemone ,它是“在 Ruby 中構建 web 蜘蛛的框架” - 我可以高度推薦它。

在 Ruby 中,如果要獲取網頁的文本,只需使用Net::HTTP命名空間。 get方法返回網頁的字符串表示形式。

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

之后您可能會想要使用某種 XML 解析器來制作頁面的 model 並在其上導航。 我聽說過有關Hpricot的好消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM