![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Brim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.9.2009 Репутация: нет Всего: нет |
С помощью следующего кода выдергиваю код страницы:
my $url = "http://domain.name/"; my $ua = LWP::UserAgent->new(); $ua->agent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322)" . $ua->agent); my $request = HTTP::Request->new('GET', $url); my $hres = $ua->request($request); push(@logbuffer,split(/\n/,$hres->content)); Тут все работает нормально. А вот дальше можно пробежаться по всем строкам с помощью цикла, чтобы найти то, что нужно. Но попался случай, когда строки выглядят вот так: <td>392</td> <td>31.76</td> <td>36.15</td> <td>33.7874</td> А значение нужно выбрать всего одно. Я точно знаю номер строки в котором находится нужное значение и знаю как ее распарсить. Подскажите пожалуйста как перейти к этой строке, номер которой мне известен? |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
Brim, нельзя опираться на номер строки при разборе html.
Вот добавят эти товарищи рекламу на сайт, или контент изменится - и все.. номер строки поплывет. Используйте регулярки или HTML::Parse |
|||
|
||||
Brim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.9.2009 Репутация: нет Всего: нет |
sir_nuf_nuf, я отдаю себе отчет в том, какие проблемы могут возникнуть. Однако, как с помощью регулярного выражения выдернуть цифру "36.15" из третьей строки в этом примере у меня идей нет:
<td>392</td> <td>31.76</td> <td>36.15</td> <td>33.7874</td> Если на сайте что-то поменяется, я поправлю парсилку... ![]() |
|||
|
||||
Brim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.9.2009 Репутация: нет Всего: нет |
В общем сделал коряво:
while ($i < $string_number) { ++$i; shift @logbuffer; } но работает. ![]() |
|||
|
||||
Brim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.9.2009 Репутация: нет Всего: нет |
Хотя это я, конечно, ступил. Все намного проще:
print($logbuffer[номер_строки]); |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
Ну раз отдаете отчет.. остается только удивляться вашей храбрости =)
Регулярка для извлечения 3-ей TD шки
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |