如何解析具有多个表的页面

关于如何刮取多个表的网页的任何想法? 我正在连接到网页

这是一个表,但在同一个网页上有多个表

我也无法弄清楚如何阅读表…

XML:

Top 300 Overall Fantasy Rankings

Iterator trSIter = doc.select("table") .iterator(); while (trSIter.hasNext()) { Element trEl = trSIter.next().child(0); Elements tdEls = trEl.children(); Iterator tdIter = tdEls.select("tr").iterator(); System.out.println("><"+tdsEls); Iterator columnIt = tdsEls.iterator(); while (columnIt.hasNext()) { Element column = columnIt.next(); switch (tdCount++) { case 1: name =column.select("a").first().text(); break; case 2: stat2 = Double.parseDouble(column.text()); break; case 3: stat3 = Double.parseDouble(column.text()); break; case 4: stat4 = Double.parseDouble(column.text()); break; case 5: stat5 = Double.parseDouble(column.text()); break; case 6: stat6 = Double.parseDouble(column.text()); break; case 7: stat7 = Double.parseDouble(column.text()); break; case 8: stat8 = Double.parseDouble(column.text()); break;

这应该让你开始。 每个表都有一个您必须考虑的空白记录。 您还需要确定您想要的统计数据以及它们在表格中的位置。 你可以通过tds.get()获得统计数据。 让我知道它对你有用。

  Document doc = Jsoup.connect("http://www.tsn.ca/fantasy_news/feature/?ID=49815").get(); for (Element table : doc.select("div.storyStats").select("table")) { for (Element row : table.select("tr")) { Elements tds = row.select("td"); if (tds.size() > 0) { System.out.println(tds.get(1).text() + ":" + tds.get(5).text()); } } } 

使用下面的代码,从HTML解析表似乎没有问题。

 public class JsoupActivity extends Activity { Document doc; myHttpGet _myGet; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView tv = (TextView)findViewById(R.id.tv1); _myGet = new myHttpGet(); try { doc = _myGet.doHttpGet(); Elements tdsEls = doc.getElementsByClass("storyStats"); //tv.setText(tdsEls.get(0).child(0).text()); tv.setText(String.valueOf(tdsEls.first().children().size())); } catch (Exception e) { e.printStackTrace(); } } private class myHttpGet { Document myDom; Connection myConnection; Response myResponse; public Document doHttpGet() { myConnection = Jsoup.connect("http://www.tsn.ca/fantasy_news/feature/?ID=49815"); try { myResponse = myConnection.execute(); try { myDom = myResponse.parse(); return myDom; } catch (IOException e) { Log.e("napster","Parse Error"); } } catch (IOException e) { Log.e("napster","HTTP Error"); } return myDom; } } } 

代码可以在textView中显示5 ,这是您在类storyStats下的HTML中拥有的表的数量。 如果必须继续解析表的内容,可以将表分配给另一个Elements对象并继续解析它。

 Elements es = tdsEls.first().children(); 

Anderson的答案显示了如何解析数据。 希望有所帮助。

RANK CENTRES TEAM POS GP G A PTS +/- PIM PPP
1. Steven Stamkos Tampa Bay C 81 50 51 101 -2 56 38