当我使用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 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
答案 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) {
}