Быстрый способ найти значение в HTML (Java)

голоса
0

Использование регулярных выражений, то, что это самый простой способ, чтобы принести сайты HTML и найти значение внутри этого тега (или значение любого атрибута по этому вопросу):

<html>
  <head>
  [snip]
  <meta name=generator value=thevalue i'm looking for />
  [snip]
Задан 28/08/2008 в 01:28
источник пользователем
На других языках...                            


7 ответов

голоса
8

В зависимости от сложности из запроса Http вам нужно построить (аутентификацию и т.д.). Вот один простой способ, я видел использовал в прошлом.

StringBuilder html = new StringBuilder();
java.net.URL url = new URL("http://www.google.com/");
BufferedReader input = null;
try {
    input new BufferedReader(
        new InputStreamReader(url.openStream()));

    String htmlLine;
    while ((htmlLine=input.readLine())!=null) {
        html.appendLine(htmlLine);
    }
}
finally {
    input.close();
}

Pattern exp = Pattern.compile(
    "<meta name=\"generator\" value=\"([^\"]*)\" />");
Matcher matcher = exp.matcher(html.toString());
if(matcher.find())
{
    System.out.println("Generator: "+matcher.group(1));
}

Вероятно, много опечаток здесь можно найти при компиляции. (Надеюсь, что это не было домашнее задание)

Ответил 28/08/2008 d 01:38
источник пользователем

голоса
4

Его удивительно , как никто, когда адресация проблемы использования регулярных выражений с HTML, ставит проблема HTML часто НЕ быть хорошо сформирован, таким образом делая много HTML-анализаторы совершенно бесполезно.

При разработке инструментов для анализа веб-страниц и его факт, что это не хорошо сформированную HTML, заявление «Regex никогда не следует использовать для разбора HTML» OG «использовать HTML-анализатор» просто полностью фиктивными. Факты таковы, что в реальном мире, люди создают HTML, как они чувствуют - и не обязательно подходят для анализаторов.

RegEx является совершенно правильным способом , чтобы найти элементы в тексте, таким образом , в HTML. Если есть какой - либо другой разумный способ противостоять проблемам Оригинала плаката, а затем разместить их вместо ссылается на «использовать парсер» или заявление «RTFM».

Ответил 16/12/2010 d 23:02
источник пользователем

голоса
1

Вы должны использовать XPath запроса. It'ls так же просто, как получить значение "/ HTML / головы / мета [@ имя = генератора] / @ значение".

хороший учебник: разбор XML документа с помощью XPath

Ответил 26/09/2008 d 02:09
источник пользователем

голоса
0

Это зависит.

При извлечении информации с сайта или сайтов, которые гарантированно будут хорошо сформированную HTML, и вы знаете, что <META> не будет запутывания в некотором роде то чтение <HEAD> раздел построчно и приложени регулярное выражение хороший подход.

С другой стороны, если HTML может быть искажены или «сложно», то вам необходимо использовать правильный HTML анализатор, возможно, разрешающее один как HTMLTidy. Остерегайтесь использовать строгий HTML или XML-парсер на вещах тралили из случайных сайтов. Много так называемых HTML вы найдете там действительно уродливы.

Ответил 22/11/2009 d 10:23
источник пользователем

голоса
0

Строго говоря, вы не можете быть уверены, что вы получили правильное значение, так как мета-тег может быть комментарий, или мета-тег может быть в верхнем регистре и т.д. Это зависит от того, насколько вы уверены в том, что HTML можно рассматривать как «хороший ».

Ответил 19/09/2008 d 12:07
источник пользователем

голоса
0

Я не пробовал, но не основные рамки быть

  1. Открыть java.net.HttpURLConnection
  2. Получить входной поток с помощью getInputStream
  3. Используйте регулярное выражение в ответ Майка, чтобы разобрать бит вы хотите
Ответил 28/08/2008 d 02:26
источник пользователем

голоса
0

Вы можете проверить документацию для пакета org.apache.commons.HttpClient Apache и связанных с ними пакетов здесь . Отправка запроса HTTP из приложения Java довольно легко сделать. Роется документации должны получить вас в правильном направлении.

Ответил 28/08/2008 d 02:22
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more