[英]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.