如何解析具有多个表的页面
关于如何刮取多个表的网页的任何想法? 我正在连接到网页
这是一个表,但在同一个网页上有多个表
我也无法弄清楚如何阅读表…
XML:
Top 300 Overall Fantasy Rankings
RANK CENTRES TEAM POS GP G A PTS +/- PIM PPP 1. Steven Stamkos Tampa Bay C 81 50 51 101 -2 56 38 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的答案显示了如何解析数据。 希望有所帮助。
- 使用bundle,seListAdapter运行时错误将ArrayList从片段传递到另一个片段(扩展ListFragment)
- Android – 如何显示具有值的微调器但显示不同的微调器
- 从Min到Max生成随机整数?
- 如何在Android中调整位图的最佳方式?
- BitmapFactory.decodeByteArray()始终返回null(手动创建的字节数组)
- Android自定义相机 – 在矩形内裁剪图像
- 在API 21上可以使用finishAndRemoveTask()
- 日期时间解析错误
- 无法使用robolectric捕获HTTP请求
Interesting Posts
循环AsyncTask类必须声明为abstract或实现抽象方法
Eclipse类文件元数据
Android – 无法通过服务接收我的活动中的本地广播
将progressDialog添加到JSON Parser类并返回MainActivity的方法
使用SimonVT号码选择器并且无法充气xml
如何在nativescript中使用本机android小部件类型定义?
使用Joda-Time Library将字符串转换为Google Tasks API中的DateTime格式
从Asynctask返回结果
模拟android.content.res.Configuration类型的对象并为其指定一个语言环境
“类已经定义”错误