2014-01-12 69 views
1

我只是完全失落和迷惘使用JSOUP解析這個HTML文檔時...的Android使用JSOUP爲HTML

我不意味只要求直線上升代碼,但如果有人有時間,也可以讓我開始,這將是偉大的...

下面是文檔: http://radar.weather.gov/ridge/RadarImg/N0R/ILN/

如果您查看我試圖獲取這些行的源:

<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="ILN_20140112_0021_N0R.gif">ILN_20140112_0021_N0R.gif</a></td><td align="right">12-Jan-2014 00:23 </td><td align="right">2.2K</td><td>&nbsp;</td></tr> 

正如你看到有很多的這些...我需要在

<a href= 

我還需要在這些線路的前十是值...

正如我所說的,如果任何人有幫助我的時候,我將不勝感激!

+0

我建議你閱讀[cookbook](http://jsoup.org/cookbook/) – hypd09

+0

你需要這個「ILN_20140112_0021_N0R.gif」作爲值嗎? – Adnan

+0

Yasir:是的,我需要那個字符串 – user3047494

回答

2

首先,你需要在HTML的內容存儲到文件(解釋更多here):

String url = "http://radar.weather.gov/ridge/RadarImg/N0R/ILN/";  
Document doc = Jsoup.connect(url).get(); 

下一頁選擇您需要的文檔元素(見here)。在下面的行,它會選擇所有<a>元素與包含字符串"gif"一個href屬性:

Elements links = doc.select("a[href]:contains(gif)"); 

然後從前十打印出來的值,你可以只使用一個循環。該attr()方法允許你提取特定屬性的唯一價值,而不是完整的HTML或它的文本:

for (int i=0;i<10;i++) { 
    System.out.println(links.get(i).attr("href")); 
} 

輸出是:

ILN_20140112_0221_N0R.gif 
ILN_20140112_0227_N0R.gif 
ILN_20140112_0232_N0R.gif 
ILN_20140112_0237_N0R.gif 
ILN_20140112_0242_N0R.gif 
ILN_20140112_0248_N0R.gif 
ILN_20140112_0253_N0R.gif 
ILN_20140112_0258_N0R.gif 
ILN_20140112_0303_N0R.gif 
ILN_20140112_0308_N0R.gif 

這在本質上是基本方法對於大多數你將在Jsoup中進行解析。你應該從頁面中提取一些其他元素(使用this page作爲參考)。

+0

非常感謝!我對解析器不太瞭解!我大麥以標準化的方式解析XML!我覺得你非常感謝你的時間,甚至更深入的解釋! – user3047494

+0

@ user3047494很高興提供幫助。請注意,我只是修正了我在for循環中的一個小錯誤,所以現在應該輸出前十個。 – ashatte

+0

謝謝:)有沒有一個很好的網站來學習JSOUP?我非常喜歡HTML解析器的想法! – user3047494

0

試試這個

String TestUrl = "<tr><td><img src='/icons/image2.gif' alt='[IMG]'></td><td><a href='ILN_20140112_0021_N0R.gif'>ILN_20140112_0021_N0R.gif</a></td><td align='right'>12-Jan-2014 00:23</td><td align='right'>2.2K</td><td>&nbsp;</td></tr>"; 
Document doc = Jsoup.parse(TestUrl); 
Element link = doc.select("a").first(); 
/** 
* value will be "ILN_20140112_0021_N0R.gif" 
*/ 
String value = link.text(); 
0

編輯:請參閱@ ashatte的解決方案來代替。

Document doc = Jsoup.parse 
       (new URL("http://radar.weather.gov/ridge/RadarImg/N0R/ILN/"), 
        3000); 
      //Or whatever your link is; 3000 is timeout 

      int ignoreCount = 0; 
      //using a counter to ignore top 2 lines 
      for (Element item : doc.select("tr")) { 
      // Selects the <tr> elements so item is a single <tr> 
       if (a > 1) { 
        Element link = item.select("a").first(); 
         // selects first <a> element 
        if (link != null && link.hasAttr("href")) 
         String href = link.attr("href")); 
         // fetches href attribute from the selected <a> 
       } 
       a++; 
      } 

這只是一種方法,可以做到這一點。我強烈建議你閱讀了JSOUP cookbook