Особенно интересным для меня как начинающего 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