2015-06-05 4 views
-1

Я пытаюсь отказаться от содержимого таблицы из URL-адреса с помощью java, но скребок, по-видимому, работает некорректно. Я использовал java-документы на inputstreamReader и других онлайн-примерах, но не смог понять, в чем моя проблема. Проблема в том, что inputstreamReader пропускает два столбца каждой четной строки в таблице, получая последний столбец. Каждая нечетная строка дает желаемые результаты. Ниже мой код и вывод enter image description here.У меня проблема с InputstreamReader и html

Источник таблица выглядит следующим образом: enter image description here

И, наконец, вывод выглядит следующим образом: enter image description here

В перспективе HTML, каждый столбец в строке является метка, которая считывается в виде линий. Поскольку пропускаются два столбца, означает ли это, что inputStreamReader пропускает две строки? Я думал, что это будет проблема regEx, но это не может быть причиной, потому что остальная часть вывода правильная. Я хочу иметь возможность выводить или читать во всех строках и столбцах правильно, чтобы иметь возможность продолжить.

+0

Дважды проверить регулярные выражения ... быть уверены, что они принимают учитывайте различия в синтаксисе для каждой записи в таблице (например, правдоподобные пробелы). – copeg

ответ

0

Ценовые паттерны различаются в нечетных и четных строках.

нечетные строки:

<tr> 
     <td>16:00:52</td> 
     <td>$&nbsp;82.14&nbsp; </td> 
     <td>763</td> 
    </tr> 

Даже строки:

<tr> 
     <td>16:00:52 </td> 
     <td>$&nbsp;82.14 &nbsp;</td> 
     <td>8,116</td> 
    </tr> 

Шаблон, который соответствует обоих случаях:

String preicePattern = "<td>\\$&.+;(\\d{1,4}\\.\\d{1,4}) *&"; 
+0

Привет, Saka1029, ваш пример не сработал для меня, но я смог решить проблему, используя: String preicePattern = " \\ $ &.+; (\\ d {1,4} \\. \\ d {1, 4}) * & "; – user3422517

Смежные вопросы