Android에서 HTML 구문 분석
웹 페이지에서 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();
우리 모두는 프로그래밍이 무한한 가능성을 가지고 있다는 것을 알고 있습니다. 단일 문제에 대해 사용할 수있는 솔루션이 많기 때문에 위의 모든 솔루션이 완벽하고 누군가에게 도움이 될 수 있다고 생각합니다.
따라서 코드는 다음과 같습니다.
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 에서 원본 블로그를 읽으십시오.
Maybe you can use WebView, but as you can see in the doc WebView doesn't support javascript and other stuff like widgets by default.
http://developer.android.com/reference/android/webkit/WebView.html
I think that you can enable javascript if you need it.
참고URL : https://stackoverflow.com/questions/2188049/parse-html-in-android
'Nice programing' 카테고리의 다른 글
reactjs에서 hover 상태에 액세스하려면 어떻게해야합니까? (0) | 2020.10.07 |
---|---|
객체 지향 프로그래밍에서 공용, 개인 및 보호 란 무엇입니까? (0) | 2020.10.07 |
사람들이 여전히 iframe을 사용하는 이유는 무엇입니까? (0) | 2020.10.07 |
Reader와 InputStream의 차이점은 무엇입니까? (0) | 2020.10.07 |
왜 이것이 기본 생성자를 호출합니까? (0) | 2020.10.07 |