私はウェブページからアンドロイドでHTMLを解析しようとしていますが、ウェブページがうまく形成されていないので、私は得SAXException
ます。
AndroidでHTMLを解析する方法はありますか?
私はウェブページからアンドロイドでHTMLを解析しようとしていますが、ウェブページがうまく形成されていないので、私は得SAXException
ます。
AndroidでHTMLを解析する方法はありますか?
回答:
私はちょうどこの問題に遭遇しました。いくつか試してみましたが、JSoupを使うことにしました。jarファイルは約132kで、少し大きいですが、ソースをダウンロードして、使用しないメソッドのいくつかを削除すると、それほど大きくはありません。
=>それの良いところはそれが悪い形のHTMLを処理するということです
これが彼らのサイトからの良い例です。
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
//http://jsoup.org/cookbook/input/load-document-from-url
//Document doc = Jsoup.connect("http://example.com/").get();
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
Html.fromHtml(source)を使用してみましたか?
クラスはソースの品質に関してかなり寛大だと思います(内部ではTagSoupを使用していますが、これは実際の悪いHTMLを念頭に置いて設計されています)。ただし、すべてのHTMLタグをサポートしているわけではありませんが、理解できないタグに反応するように実装できるハンドラーが付属しています。
String tmpHtml = "<html>a whole bunch of html stuff</html>";
String htmlTextStr = Html.fromHtml(tmpHtml).toString();
toString()
れたSpanned
オブジェクトを呼び出すHtml.fromHtml(str)
と、HTML
タグの多くが機能しなくなります(を含む<i>
<u>
<b>
)。あなたがのTextViewを設定している場合は、これだけの操作を行います。myTextView.setText(Html.fromHtml(str))
Html.fromHtml()
ます。このチェックアウトstackoverflow.com/a/3150456/1987045
プログラミングには無限の可能性があることは誰もが知っています。1つの問題に対して利用できる解決策はたくさんあるので、上記の解決策はすべて完璧で、誰かに役立つかもしれないと思いますが、私にとってはこれが私の一日を救います。
したがって、コードは次のようになります
private void getWebsite() {
new Thread(new Runnable() {
@Override
public void run() {
final StringBuilder builder = new StringBuilder();
try {
Document doc = Jsoup.connect("http://www.ssaurel.com/blog").get();
String title = doc.title();
Elements links = doc.select("a[href]");
builder.append(title).append("\n");
for (Element link : links) {
builder.append("\n").append("Link : ").append(link.attr("href"))
.append("\n").append("Text : ").append(link.text());
}
} catch (IOException e) {
builder.append("Error : ").append(e.getMessage()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
result.setText(builder.toString());
}
});
}
}).start();
}
上記の関数をで呼び出す必要がonCreate Method
ありますMainActivity
これが皆さんのお役に立てば幸いです。
Mediumの元のブログも読んでください
WebViewを使用できるかもしれませんが、ドキュメントでわかるように、WebViewはデフォルトでjavascriptやウィジェットなどの他のものをサポートしていません。
http://developer.android.com/reference/android/webkit/WebView.html
必要に応じてJavaScriptを有効にできると思います。