簡體   English   中英

Jsoup HTML解析可以在Java上運行,但不能在android studio上運行

[英]Jsoup HTML Parsing work on java but doesn't work on android studio

我正在使用Jsoup進行html解析項目,無法正確解析Title和Image,但是當我嘗試解析計時器(與本鏈接相關的這篇文章)時,我在android studio上失敗了,但使用的代碼可以通過@Shn_Android_Dev 此代碼 ,這是我的代碼。

public void EbayTimerTest() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            Document doc;
            try {
                doc = Jsoup.connect(WEBSITE_URL).get();
                String remaining = doc.select("#vi-cdown_timeLeft").first().text();
                remainingMs = getUnixFromString(remaining);

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    timer.setText(String.valueOf(remainingMs));
                }
            });
        }
    }).start();
    }
}

我仍然得到的錯誤是

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.jsoup.nodes.Element.text()' on a null object reference

很確定

String remaining = doc.select("#vi-cdown_timeLeft").first().text();

無法在android studio上解析,但可以在Java Eclipse上使用。

ps Jsoup效果很好,如果我嘗試解析其他元素(例如Title和Image)。

發生異常的主要原因可能是每個IDE向服務器發送不同的userAgent字符串,因此您將獲得兩個不同的HTML。
您可以通過以下兩種方式之一解決它:

  1. 閱讀您通過AS獲得的doc ,並查看對所需信息的查詢。
  2. userAgent字符串添加到get請求中-

     doc = Jsoup.connect(URL).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101") .get(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM