Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Парсер на perl / 23 сообщений из 23, страница 1 из 1
30.03.2012, 20:50:03
    #37732244
3031986
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
Всем привет!
Задача такая - вытащить все ссылки с html страницы. Может кто то подскажет код на Perl, можно просто через регулярку.
Заранее спасибо.
...
Рейтинг: 0 / 0
30.03.2012, 20:58:13
    #37732249
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
3031986,

Линксом вытаскивайте с ключиком -list. Нафиг с регулярками заморачиваться?
...
Рейтинг: 0 / 0
30.03.2012, 21:02:31
    #37732254
3031986
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
ShSerge3031986,

Линксом вытаскивайте с ключиком -list. Нафиг с регулярками заморачиваться?
А можно подробней?
...
Рейтинг: 0 / 0
30.03.2012, 23:40:46
    #37732403
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
3031986,

Это просто текстовый браузер. Из-под командной строки запускаете и получаете уже распарсеный текст страницы себе в перловую переменную. Ключик, что я сказал, выдаст список ссылок. Это как вариант. Я не говорю, что это - самое правильное решение. Предполагаю, что регуляркой можно сделать проще и лучше (но это - не интересно). Сам механизм может пригодится для всяких разных штучек. Скачайте и посмотрите. Ищите в гугле lynx. Он и под юниксом и подвендой имеется.
ПС. Я одно время тырил им данные с чужих страниц (как раз на перле, но очень давно), типа lynx -dump -nolist >abc.txt. А Вам как раз list нужен.
...
Рейтинг: 0 / 0
30.03.2012, 23:45:16
    #37732410
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
ПС. Скачивать его только для венды нужно. В линухе он и так имеется (lynx, иногда linx).
...
Рейтинг: 0 / 0
31.03.2012, 15:19:30
    #37732861
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
ShSerge3031986,

Это просто текстовый браузер. Из-под командной строки запускаете и получаете уже распарсеный текст страницы себе в перловую переменную. Ключик, что я сказал, выдаст список ссылок. Это как вариант. Я не говорю, что это - самое правильное решение. Предполагаю, что регуляркой можно сделать проще и лучше (но это - не интересно). Сам механизм может пригодится для всяких разных штучек. Скачайте и посмотрите. Ищите в гугле lynx. Он и под юниксом и подвендой имеется.
ПС. Я одно время тырил им данные с чужих страниц (как раз на перле, но очень давно), типа lynx -dump -nolist >abc.txt. А Вам как раз list нужен.
однако, одно из лучших для данных конкретных условий. регулярки не предназначены для парсинга html.
...
Рейтинг: 0 / 0
01.04.2012, 11:24:17
    #37733372
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
как по мне, куда проще парсить самому
Код: perl
1.
@arr = $page =~ /]+?HREF\s*=\s*["']?([^'" >]+?)[ '">].*?>/ig;
...
Рейтинг: 0 / 0
01.04.2012, 11:50:10
    #37733398
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
yarnikкак по мне, куда проще парсить самому
Код: perl
1.
@arr = $page =~ /]+?HREF\s*=\s*["']?([^'" >]+?)[ '">].*?>/ig;

А ещё сотню примеров можно написать, когда Ваш паттерн не соответствует.
...
Рейтинг: 0 / 0
01.04.2012, 15:24:29
    #37733509
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
попробуйте
...
Рейтинг: 0 / 0
01.04.2012, 16:34:24
    #37733554
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
yarnik, а что тут пробовать, ты вообще нерабочий код выдаешь
запусти :
Код: sql
1.
2.
3.
$page='<a href="ololo"> aaa </a>';
@arr = $page =~ /]+?HREF\s*=\s*["']?([^'" >]+?)[ '">].*?>/ig;
print @arr;
...
Рейтинг: 0 / 0
01.04.2012, 18:59:39
    #37733660
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
извиняюсь
Код: sql
1.
2.
3.
$page='<a href="ololo"> aaa </a>';
@arr = $page =~ /<A[^>]+?HREF\s*=\s*["']?([^'" >]+?)[ '">].*?>/ig;
print @arr;
...
Рейтинг: 0 / 0
01.04.2012, 19:17:56
    #37733671
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
yarnik, держи, первая же страница в гугле
Код: sql
1.
2.
3.
$page='<select name="url>adee" value="wq<ew">';
@arr = $page =~ /<A[^>]+?HREF\s*=\s*["']?([^'" >]+?)[ '">].*?>/ig;
print @arr;


и такого очень много. регулярные выражения тоже имеют свои минусы.
...
Рейтинг: 0 / 0
01.04.2012, 20:42:39
    #37733740
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
так це ж не по феншую.
...
Рейтинг: 0 / 0
01.04.2012, 21:03:02
    #37733761
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
yarnik, Ниче не знаю - код html валидацию на сайте w3c.org проходит, а ссылку извлекает неправильно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$page='
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>
<title>Title of the document</title>
</head>

<body>
<a href="123.com>23">aaa</a>
</body>

</html> 
';
@arr = $page =~ /<A[^>]+?HREF\s*=\s*["']?([^'" >]+?)[ '">].*?>/ig;
print @arr;
...
Рейтинг: 0 / 0
01.04.2012, 21:17:41
    #37733770
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
вот из книжачки еще полностью валидного и даже похожего на осмысленный, кода
Код: sql
1.
2.
3.
4.
5.
<IMG SRC = "foo.gif" ALT = "A > B">
<!-- <A comment> -->
<script>if (a<b && a>c)</script>
<# Just data #>
<![INCLUDE CDATA [ >>>>>>>>>>>> ]]>


попарси, давай.
...
Рейтинг: 0 / 0
01.04.2012, 21:51:00
    #37733800
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
netwindyarnik, держи, первая же страница в гугле
Код: sql
1.
2.
3.
$page='<select name="url>adee" value="wq<ew">';
@arr = $page =~ /<A[^>]+?HREF\s*=\s*["']?([^'" >]+?)[ '">].*?>/ig;
print @arr;



и такого очень много. регулярные выражения тоже имеют свои минусы.

Объясните мне, че тут происходит?)
...
Рейтинг: 0 / 0
01.04.2012, 22:37:27
    #37733857
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
я предложил вариант парсинга линков со страницы,
а netwind пытается меня убедить что лучше не пользоватся регулярками.
хотя я больше склонен к тому что надо правильно писать линки;)
...
Рейтинг: 0 / 0
01.04.2012, 22:53:57
    #37733879
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
yarnik, кому надо? невозможно всех заставить правильно писать линки
...
Рейтинг: 0 / 0
02.04.2012, 09:47:59
    #37734163
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
Кстати, подумалось, что закомментаренные ссылки тоже будут попадать.
...
Рейтинг: 0 / 0
02.04.2012, 10:18:21
    #37734210
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
коллеги, а чем не
http://cpan.uwinnipeg.ca/htdocs/HTML-DOM/HTML/DOM.html
- ну и SAX где-то рядом....
...
Рейтинг: 0 / 0
02.04.2012, 10:25:52
    #37734222
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
ну и вот
http://www.foo.be/docs/tpj/issues/vol5_1/tpj0501-0003.html
Parsing HTML with HTML::PARSER
...
Рейтинг: 0 / 0
02.04.2012, 20:10:40
    #37735273
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
Vladimir Baskakov, без ошибок, но тупо.
...
Рейтинг: 0 / 0
02.04.2012, 20:18:02
    #37735284
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсер на perl
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Парсер на perl / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]