Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解析包含多个表的页面_Java_Android_Jsoup - Fatal编程技术网

Java 如何解析包含多个表的页面

Java 如何解析包含多个表的页面,java,android,jsoup,Java,Android,Jsoup,你知道如何用多个表来抓取网页吗? 我正在连接到网页 这是一个表,但在同一网页上有多个表 我也不知道怎么看这张表 XML: 等级 中心 团队 销售时点情报系统 全科医生 G A. 临时秘书处 +/- PIM 购买力平价 1. 坦帕湾 C 81 50 51 101 -2 56 38 迭代器trSIter=doc.select(“表”) .iterator(); while(trSIter.hasNext()){ 元素trEl=trSIter.next().child(0); 元素tdEls=t

你知道如何用多个表来抓取网页吗? 我正在连接到网页

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

我也不知道怎么看这张表

XML:

等级 中心 团队 销售时点情报系统 全科医生 G A. 临时秘书处 +/- PIM 购买力平价 1. 坦帕湾 C 81 50 51 101 -2 56 38 迭代器trSIter=doc.select(“表”) .iterator(); while(trSIter.hasNext()){ 元素trEl=trSIter.next().child(0); 元素tdEls=trEl.children(); 迭代器tdIter=tdEls.select(“tr”).Iterator();
System.out.println(“>这应该可以让您开始了。每个表都有一条空白记录,您必须对其进行说明。您还必须弄清楚需要哪些统计数据以及它们在表中的位置。您可以使用
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,这是您在该HTML中的类storyStats下的表数。如果您必须继续解析表的内容,您可以将表分配到另一个Elements对象中并继续解析它

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

Anderson的回答说明了如何解析数据。希望能有所帮助。

这不是一个“给我一个codez!”网站。你做过任何研究吗?你发现了什么?你尝试了什么?你有什么代码吗?你能发布URL吗?还有,通过“阅读表格”",我想你的意思是提取球员的各种统计数据?谢谢!是的,我需要提取球员的姓名和数据。谢谢B谢谢B谢谢这很好!有没有办法将整个页面拆分为不同的表格。例如,每个表格代表不同的位置,我需要将它们存储在不同的列表中。谢谢!每次通过outside for loop是其中一个表。如果表的顺序没有改变,您可以使用计数器并对照它进行检查。例如表1代表中心,表2代表左翼等等。或者,标题记录似乎包含位置。您可以通过抓取冷杉之类的操作来选择每个表的标题记录每个表的t行(应为标题行),并从其中一个th元素中取出位置。
Elements es = tdsEls.first().children();