[android] 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 에서 원본 블로그를 읽으십시오.


답변

WebView를 사용할 수 있지만 문서에서 볼 수 있듯이 WebView는 기본적으로 자바 스크립트 및 위젯과 같은 기타 항목을 지원하지 않습니다.

http://developer.android.com/reference/android/webkit/WebView.html

필요한 경우 javascript를 활성화 할 수 있다고 생각합니다.


답변