2012-01-29 16 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(); 

あなたはアンカータグと任意のタグの外側平面テキストが含まクラスで=「playertablePlayerName」の完全なテキストを取得します。あなたは得るでしょう

Derric Rose, Chi PG 

あなたの出力です。この問題を解決するには、アンカータグの条件も含める必要があります。 beloveラインを代わりに使用してみてください。

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

あなたが既に持っているtdの子を通過できます。正しいタグを取得したら、連鎖したtext()メソッドを使用します。

ご不明な点がありましたらお気軽にお問い合わせください。あなたはおそらくあなたが望む結果を得るために、このコードをハックすることができ

+0

感謝しかし、次のエラーを取得:!getElementsByTagNameの(文字列)である方法定義されていない型の要素 – user1163234

+0

わかりました。間違いなく私は間違いを犯しました。 name = tdEl.getElementsByClass( "playertablePlayerName")はオブジェクトのリストを返します。 私は自分の答えを修正しました。もう一度見てみましょう。それが機能する場合、答えを受け入れることを忘れないでください、左の目盛りをクリックしてください。 –

+0

再度試みましたが、同じreult:name = tdEl.getElementsByClass( "playertablePlayerName")。get(0).text(); – user1163234

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) {    
    } 
関連する問題