2

我不是在談論HTML標籤,而是用於描述博客文章的標籤,或者是YouTube網站上的視頻或問題。智能地從博客和其他網頁中提取標籤

如果我只是抓取一個網站,我只是使用xpath來提取標籤,或者如果它很簡單,甚至是一個正則表達式。但我希望能夠在我的extract_tags()函數中拋出任何網頁並列出標籤。

我可以想象使用一些簡單的啓發式方法,例如找到所有帶有id或'tag'類的HTML元素等等。但是,這非常脆弱,並且可能會導致大量網頁失敗。你們推薦什麼方法來解決這個問題?

另外,我知道Zemanta和Open Calais,它們都可以猜測一段文本的標籤,但這與真人已經選擇的提取標籤不同。但我仍然喜歡聽到任何其他服務/ API來猜測文檔中的標籤。

編輯:只是要清楚,一個已經爲此工作的解決方案將是偉大的。但我猜測沒有開源軟件已經做到了這一點,所以我真的只是想聽到人們對可能適用於大多數情況的可能方法。它不一定是完美的。編輯2:對於建議通常可行的通用解決方案的人是不可能的,並且我必須爲每個網站/引擎編寫自定義刮板,請考慮arc90 readability tool。這個工具能夠以令人驚訝的準確度爲網上任何給定的文章提取文章文本,使用某種啓發式算法我相信。我還沒有深入研究他們的方法,但它適合於一個小書籤,並沒有涉及太多。我明白提取文章可能比提取標籤更簡單,但它應該作爲可能的例子。

回答

0

該死的,只是想建議開放加萊。沒有「偉大」的方式來做到這一點。如果你有一些目標平臺,你可以嗅探Wordpress,然後看到他們的鏈接結構,並再次爲Flickr ...

+0

是的,但是這不太可能覆蓋我想要爬行的網站的一半。我無法爲每種可能的結構寫一些東西:/ – ehsanul 2010-09-04 06:20:44

1

如果源暴露他們的數據作爲飼料(RSS/Atom),那麼你可能是能夠從這個結構化數據中獲取標籤(或標籤/類別/主題等)。

另一種選擇是解析每個網頁並查找根據rel=tag microformat格式化的標籤。

+0

謝謝,不知道標籤微格式。它似乎並沒有太多的使用它,這是一個恥辱。 – ehsanul 2010-09-06 22:49:25

0

如果您發現通用解決方案,請告訴我們。我已經測試了許多工具(KapowTech,iMacros等),並且每個工具都要求您爲每個網站定製您需要使用的「腳本」。

0

我認爲你唯一的選擇是爲每個站點編寫自定義腳本。儘管你可以看看AlchemyApi,讓事情變得更容易。他們具有與OpenCalais相似的實體提取功能,但他們也有一個「Structured Content Scraping」產品,這比使用簡單的視覺約束來識別網頁片段來編寫xpaths更容易。

0

這是不可能的,因爲沒有一個很好的知識,遵循規範。即使不同版本的相同引擎也可以創建不同的輸出 - 嘿,使用WordPress的用戶可以create his own markup

如果你真的有興趣做這樣的事情,你應該知道這將是一個非常耗時且正在進行的項目:你將創建一個能夠檢測到正在使用哪個「引擎」的庫頁面,並解析它。如果由於某種原因無法檢測頁面,則可以創建新的規則進行解析並繼續前進。

我知道這不是你正在尋找的答案,但我真的看不到另一種選擇。我使用Python,所以我會使用Scrapy,因爲它是一個完整的抓取框架:它是完整的,有據可查的,真正可擴展的。

0

嘗試製作Yahoo管道並通過Term Extractor模塊運行源頁面。它可能會也可能不會給出很好的結果,但是值得一試。注 - 啓用V2引擎。

+0

這相當於使用Zemanta或Open Calais或Alchemy API或您自己的標記器和tf-idf值查找關鍵字。結果質量對我來說是一個重要問題。 – ehsanul 2010-09-17 00:07:42

+0

我正在嘗試,我想知道如何啓用V2引擎。我看到的只是這個(在URL中用V2代替V1,只是重定向到V1):http://developer.yahoo.com/search/content/V1/termExtraction.html – ehsanul 2010-09-17 03:40:45

+0

保存管道,然後轉到頁面顯示結果的地方。啓用V2的鏈接應該在左側。 – Reinderien 2010-09-17 04:22:39

2

系統類似於通過查看諸如標籤/文本比率和其他啓發式方法等工作而給予工作的arc90示例。這些頁面的文本內容與周圍的廣告/菜單等有足夠的區別。其他示例包括可縮放電子郵件或地址的工具。這裏有可以被檢測到的圖案,可以被識別的位置。在標籤的情況下,雖然你沒有太多的幫助你將標籤與普通文本區分開來,但它只是一個詞或短語,就像任何其他文本一樣。側邊欄中的標籤列表很難區分導航菜單。

像tumblr這樣的一些博客的標籤的URL中有「tagged」這個詞,你可以使用它。 WordPress的標籤類似地具有「.../tag/...」類型的URL。像這樣的解決方案可以爲大量博客工作,而不依賴於他們各自的頁面佈局,但他們無法在任何地方工作。

0

看着arc90,他們似乎也要求發佈商使用語義上有意義的標記[請參閱https://www.readability.com/publishers/guidelines/#view-exampleGuidelines],以便他們可以相當容易地解析它,但大概他們必須要麼開發了一個通用的規則,例如@dunelmtech建議的標籤/文本比率,這可以與文章檢測一起工作,或者他們可能會使用一些文本分割算法(來自自然語言處理領域),例如TextTiler和C99這可能是非常有用的文章檢測 - 見http://morphadorner.northwestern.edu/morphadorner/textsegmenter/和谷歌的更多信息都在[學術文獻發表 - 谷歌學者]。

然而,如果您需要檢測「標籤」是一個困難的問題(因爲在上面評論中已經提到的原因),似乎似乎。我會嘗試的一種方法是使用文本分割(C99或TextTiler)算法之一來檢測文章開始/結束,然後查找包含..tag ..的ID屬性的DIV/SPAN/ULs,其中包含..tag .. ,因爲就頁面佈局的標籤而言,這些標籤通常位於文章的下方,並且位於評論Feed的正上方,這可能會令人驚訝地發揮出色。

無論如何,看看你是否有了標籤檢測的地方會很有趣。 Martin

編輯:我剛剛發現了一些可能真正有用的東西。該算法被稱爲VIPS [見:http://www.zjucadcg.cn/dengcai/VIPS/VIPS.html]並代表基於視覺的頁面分割。它基於這樣的想法,即頁面內容可以被直觀地分割成部分。與基於DOM的方法相比,由VIPS獲得的片段在語義上更加集合。嘈雜的信息,例如導航,廣告和裝飾可以很容易地刪除,因爲它們通常放置在頁面的特定位置。這可以幫助您非常準確地檢測標籤塊!