2013-04-17 96 views
0

我收到來自第三方的其他服務的iFrame鏈接http:\\abc.com?=blahblahiframelink。我想從該Iframe的內容中提取多個值。如何刮或解析iframe中的內容來獲得特定值

這裏是簡化的html。請理解,真正的HTML要複雜得多有多個div嵌套和表

.css stuff 

<html> 
<div> 
<p> NEED THIS INFO </p> 
    .... 
    blah blah 

    <img src="NEED THIS INFO" > </img> 
</div> 
</html> 

我在上面的代碼標記爲"NEED THIS INFO"什麼我想提取出來,以證明我想的屬性值以及元素的值。

我想首先商店,在我休息服務的Java字符串iframe中的內容,然後使用正則表達式的瘋狂得到我想要的信息。

在我嘗試之前,我想檢查是否有更有效的方法來做到這一點。是否有一些可用於以結構化格式獲取內容的html解析器。

如果不是那麼,請告訴我如何在Java字符串中存儲Iframe。

如果您需要更多信息,請讓我知道。

+1

使用正則表達式解析HTML這裏有一些很好的建議:http://stackoverflow.com/a/1732454/138256 – codebox

+0

你在瀏覽器中運行Java或客戶端的服務器這樣做? – Henrik

+2

Jsoup的html解析器是最好的方法。 [這裏](http://jsoup.org/)是文檔的官方網站。 – Tugrul

回答

1

對於那些來這裏的人來說,有幾種方法可以做到這一點。然而,最有效的方法是將iframe寫入字符串,就像使用HttpURLConnection或HttpsURLConnection(conn是連接)一樣。內聯框架可以從他們的鏈接中獲取。

的BufferedReader BR =新的BufferedReader(新的InputStreamReader(conn.getInputStream())); String line =「」; html =「」;

 while((line=br.readLine())!=null) 
     { 
      html=html+line+"\n"; 
     } 
     br.close(); 

當然,最有效的方法是限制Mechanize和URL調用次數等中間人的數量; etc.

可以使用java的強大.net或.nio來做到這一點,只是創建一個HttpURLConnection或javax.net的HttpsURLClient來獲取你的頁面,cookies;等等從那裏回答展開。

爲了解析頁面在Java中,你可以用A和B是更好的選擇,我知道

A.創建一個XML文檔,並運行一個XPath。我有時間限制,所以我已經爲你發佈了一個資源。所有你需要的是一個字符串,你可以做到這一點。如果您沒有在尋找特定的東西,這符合您的需求。一旦你得到了頁面,只需要修改就可以了。

http://www.mkyong.com/tutorials/java-xml-tutorials/

B.正則表達式。在網上尋找找到一個很好的解決方案,我只限於兩個鏈接。此外,MyRegexTester是一個很好的免費資源,用於學習和測試正則表達式,而您認爲這並不令人生畏,尤其是在java中。使用這些通配符並向前看。

C.更重要的是,使用像Jsoup分析器,但XML ini-變量設置爲輸出XML如果你沒有資源約束,但是,似乎並非如此。 JSoup會爲您執行xml解析並允許您使用xpath來獲取結果。

D.使用HttpUnit的或在Python(http://www.pythonforbeginners.com/cheatsheet/python-mechanize-cheat-sheet/),Perl或紅寶石圖形界面的瀏覽器等機械化。我最喜歡的是Python,因爲有更多的現成模塊,速度也差不多。Python中也有一個Jsoup插件