Perl :: Mechanize: запуск простого сканера с циклом [несколько запросов] - PullRequest
0 голосов
/ 15 мая 2011

в настоящее время прорабатывает способ анализа данных страницы: http://www.foundationfinder.ch/

Я люблю делать это в Perl: Ну, я просто размышляю, как лучше всего выполнить эту работу. Угадай, что я перед хорошей кривой обучения. ;) Это задание даст мне несколько хороших уроков Perl. В данный момент это проходит над моей головой ...; -)

Итак, вот пример страницы:

see the resultpage

... и, как я думал, я могу найти все 790 страниц результатов в определенном диапазоне между Id = 0 и Id = 100000. Я подумал, что могу пойти по пути с циклом:

http://www.foundationfinder.ch/ShowDetails.php?Id=11233&InterfaceLanguage=&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id=927&InterfaceLanguage=1&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id=949&InterfaceLanguage=1&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id=20011&InterfaceLanguage=1&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id=10579&InterfaceLanguage=1&Type=Html

я думал, что смогу пойти по Perl-Way, но я не очень уверен: я пытался использовать LWP :: UserAgent для тех же URL-адресов [см. Ниже] с разными аргументами запроса, и мне интересно, если LWP :: UserAgent предоставляет нам способ перебрать аргументы запроса? Я не уверен, что у LWP :: UserAgent есть метод для этого. Ну, я иногда слышал, что проще использовать Mechanize. Но так ли проще!?

КСТАТИ; Но если я пойду по пути PHP, я смогу сделать это с помощью Curl - не могу ли я !?

Вот мой подход: я пытался понять это. И я копался глубже в Manpages и Howtos. Мы можем создать цикл для создания URL-адресов и использовать Curl - несколько раз

Как отмечено выше: здесь у нас есть несколько страниц результатов;

http://www.foundationfinder.ch/ShowDetails.php?Id=11233&InterfaceLanguage=&Type=Html http://www.foundationfinder.ch/ShowDetails.php?Id=927&InterfaceLanguage=1&Type=Html

В качестве альтернативы мы можем добавить обработчик request_prepare, который вычисляет и добавляет запрос аргументы, прежде чем мы отправим запрос.

Опять же: Что нацелено: я хочу проанализировать данные, а потом хочу сохранить их в локальной базе данных MySQL

я должен определить extern_uid!?

и действуйте так:

for my $i (0..10000) {
  $ua->get('http://www.foundationfinder.ch/ShowDetails.php?Id=', id => 21, extern_uid => $i);
  # process reply
}

Хорошо, но теперь я застрял - мне нужна помощь - могу ли я сделать такую ​​работу!?

привет

* * Ноль тысяча сорок-девять

1 Ответ

3 голосов
/ 15 мая 2011

Не делай так.Используйте HTTP live headers (Firefox Plugin) или eqv.чтобы увидеть, что делает javascript за кулисами, пока вы выбираете то, что вам нужно, из здесь , чтобы попасть на эту страницу (с таблицей).

Чтобы получить данные из таблицы, используйте HTML::TableExtract или HTML::TreeBuilder::XPath, если вы хотите использовать XPath

Если вы хотите перебирать запросы, просто создайте еще одну переменную:

my $a = 'http://www.foundationfinder.ch/ShowDetails.php?Id=' . $q . '&InterfaceLanguage=&Type=Html';

и увеличивайте $ q по мере того,убедитесь, что страница действительна, прежде чем пытаться загрузить ее с get

...