用jsoup问题刮刮网站

时间:2012-01-29 09:25:53

标签: android 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);

输出:

 name: Derrick Rose, Chi PG

3 个答案:

答案 0 :(得分:1)

你做错了。按行,

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

您将获得with class =“playertablePlayerName”的完整文本,其中包含锚标记和任何标记之外的平面文本。意思是,你会得到

Derric Rose, Chi PG

这是你的输出。要解决此问题,您还必须包含锚标记的条件。尝试使用belove作为替代品。

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

你可以穿越你已经拥有的孩子。获得正确的标记后,请使用链式text()方法。

如果您有任何疑问,请随时询问。

答案 1 :(得分: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();

请告诉我这是否适合您。

答案 2 :(得分: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) {             
    }