Это очень просто, и процесс очень похож на каждую полуструктурированную страницу, с которой вы извлекаете информацию.
Во-первых, вы должны однозначно идентифицировать элемент DOM , гдеНеобходимая информация лежит в этом. Самый простой способ сделать это - использовать инструмент веб-разработки, такой как Firebug в Firefox, или те, которые поставляются в комплекте с IE (> 6, я думаю) и Chrome.
Используя в качестве примера статью Картофель , вы обнаружите, что интересующий вас араграф <p>
находится в следующем блоке :
<div class="mw-content-ltr" lang="en" dir="ltr">
<div class="metadata topicon" id="protected-icon" style="display: none; right: 55px;">[...]</div>
<div class="dablink">[...]</div>
<div class="dablink">[...]</div>
<div>[...]</div>
<p>The potato [...]</p>
<p>[...]</p>
<p>[...]</p>
Другими словами, вы хотите найти первый <p>
элемент, который находится внутри div
с class
, называемым mw-content-ltr
.
Затем выпросто нужно выбрать этот элемент с помощью jsoup, используя, например, его синтаксис селектора (который очень похож на jQuery):
public class WikipediaParser {
private final String baseUrl;
public WikipediaParser(String lang) {
this.baseUrl = String.format("http://%s.wikipedia.org/wiki/", lang);
}
public String fetchFirstParagraph(String article) throws IOException {
String url = baseUrl + article;
Document doc = Jsoup.connect(url).get();
Elements paragraphs = doc.select(".mw-content-ltr p");
Element firstParagraph = paragraphs.first();
return firstParagraph.text();
}
public static void main(String[] args) throws IOException {
WikipediaParser parser = new WikipediaParser("en");
String firstParagraph = parser.fetchFirstParagraph("Potato");
System.out.println(firstParagraph); // prints "The potato is a starchy [...]."
}
}