Очистка страниц с асинхронными ответами с помощью Hpricot - PullRequest
1 голос
/ 21 июня 2010

Я пытаюсь почистить страницу, но первоначальный ответ не имеет ничего в теле, так как контент загружается асинхронно, например, Результаты поиска на сайте Apple: http://www.apple.com/uk/search/?q=searching+for+something&sec=global

Есть идеи, как я могу успешно получить результаты поиска с помощью hpricot?

Спасибо.

1 Ответ

2 голосов
/ 21 июня 2010

Когда загружается страница поиска, на которую вы ссылаетесь, она отправляет запрос через javascript / ajax в другое место, а затем заполняет результаты поиска.Это то, что вы видите на странице.Сам Hpricot не может вам здесь помочь, потому что у него нет способа интерпретировать javascript, который поставляется со страницей, для получения фактического списка результатов поиска.

Теперь, если вас интересует поискрезультаты, вам нужно немного проанализировать, что происходит, когда вы заходите на эту страницу и вводите поисковый запрос.Некоторый javascript на странице принимает ваш запрос и вызывает (через XMLHttpRequest или аналогичные методы AJAX) какой-то другой скрипт на сервере Apple.Это тот, который фактически выполняет поиск в базе данных и возвращает результат.

Я предлагаю вам установить Firefox с плагином Firebug или каким-либо другим способом увидеть фактические запросы, которые отправляет страница и ее компоненты javascript, и/ или получить.Вы увидите, что для страницы поиска, на которую вы ссылались, она выбирает две части: во-первых, «избранные» результаты, полученные по этому URL:

http://www.apple.com/global/scripts/search_featured.php?q=mac+mini&section=global&geo=uk

Обратите внимание на строку поисканаходится в параметре "q".

Во-вторых, отсюда выводится длинный список результатов:

http://www.apple.com/search/service/nph-search10?site=uk_www&filter=1&snum=50&q=mac+mini

Оба они являются документами XML;вам, возможно, повезет больше, разбирая эти URL-адреса с помощью Hpricot.

...