当前位置: 首页 > 知识库问答 >
问题:

如何通过Android提取表数据

吕飞翼
2023-03-14

我正在尝试从网页上的表格中提取数据。到目前为止,我已经能够从标题标签中提取数据——但不能提取表格数据。如何使用下面显示的源来实现这一点?

资料来源:

public class MainActivity extends Activity {

TextView tv;
final String URL="http://example.com";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.TextView01);
new MyTask().execute(URL);
}

private class MyTask extends AsyncTask<String, Void, String> {
ProgressDialog prog;
String title = "";
@Override
protected void onPreExecute() {
      prog = new ProgressDialog(MainActivity.this);
      prog.setMessage("Loading....");
      prog.show();
}
@Override
protected String doInBackground(String... params) {
    try {
        Document doc = Jsoup.connect(params[0]).get();
        title = doc.title();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return title;
}
@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    prog.dismiss();
    tv.setText(result);
}

}
}

编辑——回应马泰·斯皮利的以下评论:

public class MainActivity extends Activity {

TextView tv;
final String URL="http://example.com";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.TextView01);
new MyTask().execute(URL);
}

private class MyTask extends AsyncTask<String, Void, String> {
ProgressDialog prog;
String title = "";
@Override
protected void onPreExecute() {
      prog = new ProgressDialog(MainActivity.this);
      prog.setMessage("Loading....");
      prog.show();
}
@Override
protected String doInBackground(String... params) {
    try {
        Document doc = Jsoup.connect(params[0]).get();
        Element tableHeader = doc.select("tr").first();


        for( Element element : tableHeader.children() )
        {
            // Here you can do something with each element
            System.out.println(element.text());
            tv.setText(element.text());
        }

        title = doc.title();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return title;
}
@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    prog.dismiss();
    tv.setText(result);
}
}
}

^-(导致错误:android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图)

共有1个答案

凌照
2023-03-14

将要更新的视图作为MyTask的构造函数参数传递,例如

新建MyTask(电视)。执行(URL)

相应地更改MyTask以接受此参数。

 类似资料:
  • 问题内容: 我的python级别是新手。我从未写过网络抓取工具或搜寻器。我已经编写了python代码以连接到api并提取所需的数据。但是对于某些提取的数据,我想获得作者的性别。我找到了该网站,但缺点是没有可用的api。我想知道如何编写python将数据提交到页面中的表单并提取返回数据。如果我能对此提供一些指导,那将是一个很大的帮助。 这是dom的形式: 结果页dom: 问题答案: 无需使用机械化,

  • 本文向大家介绍如何通过POST方法使用JSP读取表单数据?,包括了如何通过POST方法使用JSP读取表单数据?的使用技巧和注意事项,需要的朋友参考一下 下面是main.jsp JSP程序,用于处理Web浏览器使用GET或POST方法给出的输入。 实际上,由于更改了传递参数的唯一方法并且没有二进制数据传递到JSP程序,因此上述JSP并没有发生变化。与文件处理相关的概念将在单独的章节中解释,我们需要在

  • 本文向大家介绍如何通过GET方法使用JSP读取表单数据?,包括了如何通过GET方法使用JSP读取表单数据?的使用技巧和注意事项,需要的朋友参考一下 以下是使用HTML FORM和Submit按钮传递两个值的示例。我们将使用相同的JSP main.jsp来处理此输入。 将此HTML保留在Hello.htm文件中,并将其放在<Tomcat-installation-directory> / webap

  • main.java Controller/Controller.java 模型/ConnectDB.java 查看/fxmlSample.fxml 错误: 错误:(64,9)Java:类Sample.Controller.Controller中的method initData无法应用于给定类型;必需:javafx.event.actionevent找到:没有参数原因:实际和正式参数列表的长度不同

  • 问题内容: poplib或imaplib似乎都没有提供代理支持,尽管我尝试了google-fu,但我找不到很多有关它的信息。 我正在使用python从支持imap / pop的各种服务器上获取电子邮件,并且需要能够通过代理进行处理。 理想情况下,如果我找不到更好的方法,我希望能够直接在python中进行操作,但使用包装器(基于外部程序/脚本,基于OSX)强制所有流量通过代理即可。 有人可以帮我吗?

  • 问题内容: 我想使用JSoup将一些文本提交到此表单中。我将如何去做呢? 问题答案: 看一下jsoup.connect方法和Connection接口。 准备好要提交的文本后,可以将其作为表单提交发布到URL。 例如: 返回的对象将是帖子的结果页面。