웹 페이지에서 Android의 HTML을 구문 분석하려고하는데 웹 페이지가 제대로 형성되지 않았기 때문에 SAXException
.
Android에서 HTML을 구문 분석하는 방법이 있습니까?
답변:
이 문제가 발생했습니다. 몇 가지 시도했지만 JSoup 사용하기로 결정했습니다 . 항아리는 약 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)를 사용해 보셨습니까 ?
클래스는 소스 품질과 관련하여 상당히 자유 롭다고 생각합니다 ( 실제 나쁜 HTML을 염두에두고 설계된 TagSoup을 내부적으로 사용합니다 ). 그러나 모든 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
우리 모두는 프로그래밍이 무한한 가능성을 가지고 있다는 것을 알고 있습니다. 단일 문제에 대해 사용할 수있는 솔루션이 많기 때문에 위의 모든 솔루션이 완벽하고 누군가에게 도움이 될 수 있다고 생각합니다.
따라서 코드는 다음과 같습니다.
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는 기본적으로 자바 스크립트 및 위젯과 같은 기타 항목을 지원하지 않습니다.
http://developer.android.com/reference/android/webkit/WebView.html
필요한 경우 javascript를 활성화 할 수 있다고 생각합니다.