извлечь основную часть страницы в Java - PullRequest
1 голос
/ 09 марта 2011

Hello У меня есть страница с личностью в Википедии, и я хочу извлечь из исходного кода java код HTML из основной части.

У вас есть идеи?

Ответы [ 4 ]

2 голосов
/ 22 марта 2011

Используйте Jsoup, в частности, синтаксис селектора .

Document doc = Jsoup.parse(new URL("http://en.wikipedia.org/", 10000);
Elements interestingParts = doc.select("div.interestingClass");

//get the combined HTML fragments as a String
String selectedHtmlAsString = interestingParts.html();

//get all the links
Elements links = interestingParts.select("a[href]");

//filter the document to include certain tags only
Whitelist allowedTags = Whitelist.simpleText().addTags("blockquote","code", "p");
Cleaner cleaner = new Cleaner(allowedTags);
Document filteredDoc = cleaner.clean(doc);

Это очень полезный API для анализа HTML-страниц и извлечения нужных данных.

1 голос
/ 09 марта 2011

Для википедии есть API: http://www.mediawiki.org/wiki/API:Main_page

0 голосов
/ 09 марта 2011

Обратите внимание, что это возвращает STRING (блоб своего рода) исходного кода HTML, а не красиво отформатированный элемент содержимого.

Я использую это сам - небольшой фрагмент, который у меня есть для всего, что мне нужно.Передайте в URL, любой начальный и конечный текст или логическое значение, чтобы получить все.

public static String getPage(
      String url, 
      String booleanStart, 
      String booleanStop, 
      boolean getAll) throws Exception {
    StringBuilder page = new StringBuilder();
    URL iso3 = new URL(url);
    URLConnection iso3conn = iso3.openConnection();
    BufferedReader in = new BufferedReader(
        new InputStreamReader(
            iso3conn.getInputStream()));
    String inputLine;

    if (getAll) {
      while ((inputLine = in.readLine()) != null) {
        page.append(inputLine);
      }
    } else {    
      boolean save = false;
      while ((inputLine = in.readLine()) != null) {
        if (inputLine.contains(booleanStart)) 
          save = true;
        if (save) 
          page.append(inputLine);
        if (save && inputLine.contains(booleanStop)) {
          break;
        }
      }
    }
    in.close();
    return page.toString();
  }
0 голосов
/ 09 марта 2011
  • Анализ структуры веб-страницы
  • Используйте JSoup для анализа HTML
...