2012-01-29 104 views
0

當我用jsoup刮網站時,我得到了額外的值,我不想接收。 我只想收到他的名字,而不是他的團隊和職位。目前它也在拼搶陣地和團隊。我只想收到這個名字。jsoup問題刮臉網站

頁來源:

<td class="playertableData">5</td><td class="playertablePlayerName" id="playername_515" style=""><a href="" class="flexpop" content="tabs#ppc" instance="_ppc" fpopHeight="357px" fpopWidth="490px" tab="null" leagueId="0" playerId="515" teamId="-2147483648" cache="true">Derrick Rose</a>, Chi&nbsp;PG<a href="" class="flexpop" content="tabs#ppc" 

我的代碼:

while (tdIter.hasNext()) { 
         int tdCount = 1; 
         Element tdEl = tdIter.next(); 
         name = tdEl.getElementsByClass("playertablePlayerName") 
           .text(); 

         Elements tdsEls = tdEl.select("td.playertableData"); 
         Iterator<Element> columnIt = tdsEls.iterator(); 

         namelist.add(name); 

OUTPUT:

name: Derrick Rose, Chi PG 

回答

1

你做錯了。經行,

name = tdEl.getElementsByClass("playertablePlayerName").text(); 

您將獲得帶有class =「playertablePlayerName」,其中包括一個錨標記和任何標記之外的平面文本的全文。意思是說,你會得到

Derric Rose, Chi PG 

這是你的輸出。爲了解決這個問題,你也必須包含anchor標籤的條件。嘗試使用belove線作爲替代品。

doc = Jsoup_Connect.doHttpGet(); 
Elements tdsEls = doc.getElementsByClass("playertablePlayerName"); 
name = tdsEls.get(0).child(0).text(); 

你可以穿過你已經得到的td的孩子。當你得到正確的標籤時,使用鏈接的text()方法。

隨意問你是否有任何疑問。

+0

謝謝,但得到以下錯誤:該方法的getElementsByTagName(串)未定義類型元素 – user1163234 2012-01-29 14:34:05

+0

好吧,很明顯我犯了一個錯誤。 name = tdEl.getElementsByClass(「playertablePlayerName」)將返回一個對象列表。 我糾正了我的答案。再看一看。如果有效,請不要忘記接受答案,請點擊左側的勾號。 – 2012-01-29 14:48:58

+0

再試一次,但重複:name = tdEl.getElementsByClass(「playertablePlayerName」)。get(0).text(); – user1163234 2012-01-29 15:24:10

0

你或許可以砍了這個代碼,以獲得想要的東西:

Document doc = Jsoup.connect("http://games.espn.go.com/fba/playerrater?&slotCategoryId=0").get(); 
    for (Element e : doc.select(".playertablePlayerName")) { 
     //this assumes the name is in the first anchor tag 
     //which it seems to be according to the url in your pastbin 
     System.out.println(e.select("a").first().text()); 
    } 

要翻譯成你的代碼,我認爲這會工作...

name = tdEl.select("a").first().text(); 

讓我知道,如果這爲你工作。

0

另一種解決方案:

1.-名

String url = "http://games.espn.go.com/fba/playerrater?&slotCategoryId=0"; 

    //First Name 
    try { 
     Document doc = Jsoup.connect(url).get(); 
     Element e = doc.select("td.playertablePlayerName > a").first(); 
     String name = e.text(); 
     System.out.println(name);     
     } 
    catch (IOException e) {    
    } 

2:所有的名字

//All Names 
    try { 
     Document doc = Jsoup.connect(url).get(); 
     Elements names = doc.select("td.playertablePlayerName > a"); 
     for(Element e : names) { 
      String name = e.text(); 
      System.out.println(name); 
     } 

     } 
    catch (IOException e) {    
    }