我很难从非常简单的代码中获取所需信息。
例如,我在这个简单的代码中收集数据没有问题:
<HTML>
<TABLE>
<TABLE WIDTH=100%><TR class=FSS-data-row-highlight>
<TD> <A HREF="player.cgi?4686">Evgeni Malkin</A>, Pit (C/RW)</TD>
<TD class=FSS-data-right> 6 pts in last 2 GP </TD>
</TR>
</TABLE>
</TABLE>
</HTML>
我需要的是'最后2'中的'Evgeni Malkin 6分'字符串在该代码中正常工作。但是当连接到整个页面时,它什么都不返回。我想这是因为表中有表,但我无法弄清楚如何继续。这是我的代码:
Document doc = Jsoup.connect("http://forecaster.thehockeynews.com/hockeynews/hockey/statistics.cgi?mlb&mode=hotnot/").get();
Elements scanYearplace = doc.select("tr.FSS-data-row-highlight td");
String yearplace = scanYearplace.text();
事实上,我需要所有其他玩家获取信息,但如果我可以开始工作,那将是一个开始。
有什么建议吗?
提前致谢!
答案 0 :(得分:0)
---见下面的更新---
请注意,这一点很脆弱,因为对网站的任何更改都可能会破坏这一点。你还想做一些错误检查和诸如此类的东西。另外,我没有像上面那样看到“最后2个GP中的6个点”文本,但你可以使用这个代码获取你想要的任何统计数据。只需将stats.get(4)
更改为您想要的任何内容。
Document doc = Jsoup.connect("http://forecaster.thehockeynews.com/hockeynews/hockey/statistics.cgi?mlb&mode=hotnot/").get();
for (Element e : doc.select(".FSS-data-row")) {
Element td = e.select("td.FSS-data-left > a").first();
String name = (td != null?td.text():null);
Elements stats = e.select(".FSS-data-right");
String goals = (stats.size() > 0?stats.get(4).text():null);
System.out.println(name + ":" + goals);
}
示例输出:
null:null
J. Benn:13
P. Sharp:20
P. Marleau:17
T. Oshie:14
第一个null:null是因为它就像页面上的标题行。
您帖子中的网址指向错误的网页。这是更新的代码,以获得我认为你想要的..
Document doc = Jsoup.connect("http://forecaster.thehockeynews.com/hockeynews/hockey/statistics.cgi?&mode=hotnot").get();
for (Element e : doc.select("tr.FSS-data-row-highlight")) {
Element tdname = e.select("td > a").first();
String name = (tdname != null?tdname.text():null);
Element tdstat = e.select("td.FSS-data-right").first();
String stat = tdstat.text();
System.out.println(name + ":" + stat);
}
示例输出:
Mathieu Perreault:5 pts in last 2 GP
Mikhail Grabovski:5 pts in last 2 GP
James Neal:4 pts in last 2 GP
Kris Versteeg:4 pts in last 2 GP
Evgeni Malkin:12 pts in last 6 GP