[英]Parse data from webpage to android app using Jsoup
我的 android 应用程序有一部分是我需要解析来自 wikipedia.com 的数据并在应用程序中使用它。 当我从 go 到https://en.wikipedia.org/wiki/Template:COVID-19_pandemic_data 时,我可以看到 covid19 病例。 我想从表中检索号码
我正在使用 Jsoup。 I am able to get html data by using this https://en.wikipedia.org/w/api.php?format=xml&action=parse&page=Template:COVID-19_pandemic_data .If you can guide me how can i extract the india cases和 html 文件中的死亡。 因为 html 文档很大,并且没有 tr 的属性。 互联网上没有太多关于此的信息。 到目前为止我尝试过的...
private void getWebsite() {
new Thread(new Runnable() {
@Override
public void run() {
final StringBuilder builder = new StringBuilder();
String web_link = "https://en.wikipedia.org/w/api.php?format=xml&action=parse&page=Template:COVID-19_pandemic_data";
try {
Document doc = Jsoup.connect(web_link).get();
String title = doc.title();
Elements links = doc.select("tr");
builder.append(title).append("\n");
for(Element link : links){
builder.append(link);
}
} catch (IOException e) {
builder.append("Error : ").append(e.getMessage()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(builder.toString());
}
});
}
}).start();
}
问题与数据格式(XML)有关。 当您向下导航 XML 元素时,您会发现通过浏览器查看文档中显示的内容是:
<someTag>...</someTag>
但实际存在的是字符串的 xml 编码版本:
<someTag>...</someTag>
JSoup 无法正常工作,您需要进一步处理以将 output 转换为更多 XML 以使其正常工作。 您可以通过查看以下结果自行测试:
doc.getElementsByTag("text")
你需要替换所有<
和>
分别带有<
, >
的标记。
这是我尝试过的,以及在无法拉出tbody
/ thead
/ th
之后进行的一些小编辑。然后我开始尝试从顶级标签中拉出,从api
开始,深入到 DOM 中。
final StringBuilder builder = new StringBuilder();
String url = "https://en.wikipedia.org/w/api.php?format=xml&action=parse&page=Template:COVID-19_pandemic_data";
try {
Document doc = Jsoup.connect(url).get();
String title = doc.getElementsByTag("parse").attr("title");
另外值得一提的是,这里的文档中有一些非常好的示例: https://jsoup.org/cookbook/extracting-data/dom-navigation
最后,为了它的价值,我将 URL 更改为: https://en.wikipedia.org/wiki/Template:COVID-19_pandemic_data
让 JSoup 的使用更轻松来自 HTML 而不是 XML 的数据。
在我看来,如果你有选择,HtmlUnit 将是一个更好的工具,因为你可以简单地为你想要提取的 HTML 元素指定一个 XPath 而不必使用多个方法调用来获得你想要的......更多简洁的格式意味着隐藏错误的空间更小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.