Как обработать простой цикл в WWW :: Mechanize Perl? - PullRequest
0 голосов
/ 18 мая 2011

Особенно интересным для меня как начинающего PHP / Perl является этот сайт в Швейцарии: см. Ссылку: http://www.edi.admin.ch/esv/00475/00698/index.html?lang=de&webgrab_path=http://esv2000.edi.admin.ch/d/entry.asp?Id=1308 Который имеет набор данных 2700 оснований. Все данные могут свободно использоваться без каких-либо ограничений авторских прав на них.

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

Внешний цикл будет использовать функции select () и submit_form () во второй форме поиска на странице. Можем ли мы использовать обработку DOM здесь. Хорошо - как мы можем получить значения выбора.

Внутренний цикл с результатами будет использовать функцию «следующая ссылка» для перехода к фактическим записям с помощью следующего вызова.

$mech->follow_link(url_regex => qr/webgrab_path=http:\/\/evs2000.*\?
Id=\d+$/, n => $result_nbr);

Это перенаправит наш механический браузер на страницу входа. В основном, URL-запрос ищет ссылки, имеющие шаблон webgrap_path to Id, который уникален для каждой записи базы данных. Переменная $ result_nbr сообщает mecha, какому из результатов следует следовать.

Если у нас есть несколько страниц результатов, мы также использовали бы тот же трюк для перемещения по страницам результатов. Для семантического извлечения информации о входе мы могли бы проанализировать содержимое фактических записей с помощью XML: HTML-парсер LibXML (который прекрасно работает на этой странице), потому что он дает вам мощный выбор DOM (с использованием XPath ) методы. Ну, фактический цикл по страницам должен быть выполним в несколько строк perl из макс. 20 строк - скорее всего меньше.

Но подождите : обработка страниц ввода будет самой сложной частью сценария.

Подходы : В принципе мы могли бы сделать тот же алгоритм с одним циклом while если мы будем использовать функцию back () умно.

Можете ли вы дать мне подсказку для начала - обработки страниц ввода - делая это в Perl :: Mechanize

1 Ответ

0 голосов
/ 20 мая 2011

"Имеет набор данных из 2700 оснований. Все данные могут свободно использоваться без каких-либо ограничений на авторские права на них."

Не правда. Смотри http://perlmonks.org/?node_id=905767

«Данные защищены авторским правом, даже если они предоставляются бесплатно:« Загрузка или копирование текстов, иллюстраций, фотографий или любых других данных не влечет за собой передачи прав на контент. »(И опять же, на немецком языке, как вы уже просматривали какой-то другой немецкий список для рассылки спама). "

...