2010-03-18 64 views

回答

2

首先,您需要熟悉Java中的HTMLDOM解析器,如JTidy。這將幫助你從HTML文件中提取你想要的東西。一旦你有了基本的東西,你可以使用JDBC來輸入database

對這項工作使用正則表達式可能很誘人。但是不要。 HTML不是一種常規語言,因此正則表達式不是一種正確的方式。

+0

我以前做過這些事情,我發現JTidy有點脆弱。我會去與tagsoup:http://home.ccil.org/~cowan/XML/tagsoup/ – radai 2010-03-19 04:49:19

0

很大一部分網站建立在格式不正確的HTML代碼上。
請務必使用類似HtmlCleaner的東西來清理要解析的源代碼。
然後,您可以成功使用XPath提取節點和正則表達式來解析您從頁面提取的字符串的特定部分。

至少這是我使用的技術。

您可以使用從HtmlCleaner返回的xHtml作爲您的應用程序與您嘗試解析的遠程頁面之間的一種界面。您應該對此進行測試,如果遠程頁面發生更改,您只需提取由HtmlCleaner清除的新xHtml,重新調整XPath查詢以提取所需內容,並針對新界面重新測試您的應用程序代碼。

如果您想創建一個MultiThreaded'scraper',請注意HtmlCleaner不是線程安全的(請參閱我的post here)。
這個post可以讓你知道如何使用XPath解析格式正確的xHtml。
祝你好運! ;)

注意:在我實施Scraper的時候,HtmlCleaner在規範化我想分析的頁面方面做得更好。在某些情況下,jTidy在做同樣的工作時失敗了,所以我建議你試一試

0

我成功地在一個刮掉HTML頁面的項目中使用了lobo browser API。 lobo瀏覽器項目提供了一個瀏覽器,但你也可以很容易地使用它後面的API。它也會執行javascript,如果該JavaScript操作DOM,那麼當您調查DOM時,這也會反映在DOM中。所以,簡而言之,API允許你模仿瀏覽器,你也可以使用cookie和東西。

現在爲了從HTML中獲取數據,我首先將HTML轉換爲有效的XHTML。你可以use jtidy for this。由於XHTML是有效的XML,因此可以使用XPath輕鬆檢索想要的數據。如果您嘗試編寫解析原始HTML數據的代碼,您的代碼將很快變得混亂。因此我會使用XPath。

一旦你的數據,你可以用JDBC將其插入到一個數據庫或者也許,如果你想避免寫太多SQL

0

使用JTidy你可以從報廢的HTML數據使用Hibernate的。那麼你可以使用JDBC

1

我使用JSoup運行刮板我是一個noob,但發現它非常直觀,易於使用。它也能夠解析各種各樣的或源html,XML,RSS等。

我用htmlunit進行了實驗,幾乎沒有成功。