Самый быстрый способ будет анализировать специфическую информацию самостоятельно. Вы, кажется, знаете структуру HTML точно заранее. Методы BufferedReader
, String
и StringBuilder
должны быть достаточными. Вот начальный пример, который отображает первый абзац вашего собственного вопроса:
public static void main(String... args) throws Exception {
URL url = new URL("http://stackoverflow.com/questions/2971155");
BufferedReader reader = null;
StringBuilder builder = new StringBuilder();
try {
reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
for (String line; (line = reader.readLine()) != null;) {
builder.append(line.trim());
}
} finally {
if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {}
}
String start = "<div class=\"post-text\"><p>";
String end = "</p>";
String part = builder.substring(builder.indexOf(start) + start.length());
String question = part.substring(0, part.indexOf(end));
System.out.println(question);
}
Парсинг практически во всех случаях определенно быстрее сопоставления с шаблоном. Сопоставление с образцом проще, но существует определенный риск, что оно может привести к неожиданным результатам, особенно при использовании сложных шаблонов регулярных выражений.
Вы также можете использовать более гибкий сторонний анализатор HTML вместо того, чтобы писать его самостоятельно. Это будет не так быстро, как анализировать заранее известную информацию. Это, однако, будет более кратким и гибким. С приличными парсерами HTML разница в скорости незначительна. Я настоятельно рекомендую Jsoup для этого. Он поддерживает jQuery-подобные CSS-селекторы . Извлечение первого параграфа вашего вопроса будет так же просто, как:
public static void main(String... args) throws Exception {
Document document = Jsoup.connect("http://stackoverflow.com/questions/2971155").get();
String question = document.select("#question .post-text p").first().text();
System.out.println(question);
}
Непонятно, о какой веб-странице вы говорите, поэтому я не могу привести более подробный пример того, как вы могли бы выбирать конкретную информацию на конкретной странице с помощью Jsoup. Если вы все еще не можете понять это самостоятельно, используя Jsoup и CSS-селекторы , то не стесняйтесь размещать URL-адрес в комментарии, и я предложу, как это сделать.