2011-10-19 251 views
2

我想製作一個程序,它將檢索一些URL信息。 例如我給下面的網址,從 librarything從url中檢索信息

我怎樣才能檢索到所有下方的「標籤」選項卡中的話,像

黑圖書館幻想Thanquol & Boneripper Thanquol和骨開膛手戰錘?

我正在考慮使用java,並設計一個數據挖掘封裝,但我不知道如何開始。任何人都可以給我一些建議嗎?

編輯: 你給了我很好的幫助,但我想問別的。 對於每個標籤,我們可以看到每個標籤被使用了多少次,當我們按下「數字」按鈕時。我怎樣才能找回這個號碼呢?

+0

如果您要刪除HTML,我建議使用Python或Perl。當我編寫類似於您的示例的程序時,我對Python有很好的體驗,但目前無法真正分享任何內容。有一個特別爲[在Python中解析HTML]而製作的庫(http://docs.python.org/library/htmlparser.html),您也可以查看[regex](http://docs.python.org/ library/re.html)和[urllib](http://docs.python.org/library/urllib.html)。 – Griffin

+1

@Griffin:這似乎是一個基於DOM的解析器,只會導致醜陋的樣板代碼。此外,使用正則表達式來解析HTML是普通[瘋狂](http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html)。 – BalusC

+0

@BalusC我自己並沒有使用HTML解析器,使用正則表達式後,我被重定向到Freenode上Python通道上的庫。對此,似乎有不同的看法,有些人說沒關係,有些人說這不好。感謝您的鏈接,我會檢查出來。 – Griffin

回答

4

您可以使用HTML解析器,如Jsoup。它允許您使用簡單的CSS selectors選擇感興趣的HTML元素:

E.g.

Document document = Jsoup.connect("http://www.librarything.com/work/9767358/78536487").get(); 
Elements tags = document.select(".tags .tag a"); 

for (Element tag : tags) { 
    System.out.println(tag.text()); 
} 

它打印

Black Library 
fantasy 
Thanquol & Boneripper 
Thanquol and Bone Ripper 
Warhammer 

請注意,你應該閱讀網站的robots.txt - 如果任何 - 和閱讀服務的網站的條款 - 如果任何 - 或者你的服務器可能會遲早IP被禁。

+0

我推薦http://www.selectorgadget.com/作爲CSS選擇器,它會生成一個有效的xPath – Aboelnour

+0

這只是一個從html中獲取CSS以在Element.select(String selector selector)函數中使用它的工具。 – Aboelnour

0

我已經完成了這之前使用PHP與頁面刮,然後使用正則表達式將HTML解析爲字符串。

Example here

我想有一個在Java和其他語言類似的東西。這個概念是類似的:

  1. 加載頁面數據。
  2. 解析數據,(即用一個正則表達式,或者通過DOM模型,並使用一些CSS選擇器或一些XPath選擇。
  3. 你想與數據:)

什麼值得記住的是,有些人可能不會欣賞你的數據挖掘他們的網站,並大規模地獲利/重新分發它。