0

私はここで奇妙な問題を抱えています。しばらくの間、Jsoup 1.7.2を使用していましたが、問題はありませんでしたが、このウェブサイトwww.jornaldamarinha.ptからこのコードを使用して主要な見出しを取得しようとすると、今だけです。 :

// Connecting...
Document doc = Jsoup.connect("http://www.jornaldamarinha.pt")
                    .timeout(0)
                    .get();

// "*[class*=zincontent-wrap]" in "Jsoup idiom", means:  
// Select all tags that contains classes with "zincontent-wrap" on its name.
Elements elems = doc.select("*[class*=zincontent-wrap]"); // Retrieves 0 results!

int t = elems.size();
Log.w("INFO", "Total Headlines: " + t);

// Loop trought all retrieved headlines:
for (Element e : elems) {
   String headline = e.select("a").text().toString();
   Log.w("HEADLINE", headline);
};

失敗しました!... 0 件の結果を取得します。(〜8を取得する必要があります)

この問題は、次の原因で発生する可能性があります。

  1. エイリアン... (アンドロイドに似ていますが、もっと醜い...)
  2. ウェブサイトのエンコーディング。(ポルトガル語の特殊文字を処理するために、着信 HTML を ISO-8859-15 でエンコードしようとしましたが、問題は残ります)
  3. 受信 HTML の形式が正しくありません。(セレクターは「Try jsoup online webpage」で正常に動作し、Jsoup は通常壊れた HTML を非常にうまく処理するため、これが問題であるとは思えません)
  4. クラス名にマイナス記号 ("-") を使用すると、Jsoup が台無しになります。(私には、問題の主な(または少なくとも1つの)原因のようです)
  5. 他の何か... (非常におそらく!)

しかし... http://try.jsoup.orgで URL をフェッチすると: http://www.jornaldamarinha.ptこの CSS クエリを使用して:

*[class*=zincontent-wrap]

すべてがうまく機能します。(最大 8 個の正しい結果をすべて取得します!)


SO ... 再開するには、コードを使用して、その Web ページが行うことを正確に実行するだけです。

これについての光や回避策について、事前に感謝します! :)

4

1 に答える 1

3

解決策!...結局、上記のコードのすべてが、私が疑ったように正しく機能していました....その CSS クエリは、Android の「デフォルトのユーザー エージェント」で壊れます。「userAgent」を Jsoup の接続方法に設定することが非常に重要であることがわかりました。だから、私は次の方法で自分のコードを編集しました...今では魅力のように機能します!! ( http://try.jsoup.org Web ページとまったく同じ結果)

Document doc = Jsoup.connect("http://www.jornaldamarinha.pt")
                    .userAgent("Mozilla/5.0 Gecko/20100101 Firefox/21.0")
                    .timeout(0)
                    .get();

これが他の人にも役立つことを願っています! :)

于 2013-06-12T20:08:42.443 に答える