2013-09-27 4 views
1

Я делаю сканер PHP для изучения интернет-магазина под названием alza.cz. Я хочу ссылки на все продукты в этом интернет-магазине. Я по адресу: http://www.alza.cz/notebooky/18842920.htm., Но этот дисплей только первые 21 элемент. Чтобы получить все предметы, я должен пойти по адресу: http://www.alza.cz/notebooky/18842920.htm#f&pg=1/10000.Файл получить содержание params

Crawler использует file_get_contents для получения HTML-страницы, которая затем анализируется с использованием DOM. Проблема в том, что он выглядит так: file_get_contents игнорирует эту часть после # (возвращает только первые 21 элемент вместо всех). Есть идеи?

+0

Обе ссылки возвращают ошибку '403 - Запрещено: доступ запрещен' для меня. –

+0

обе ссылки дают 403 ошибка – bansi

+0

Здесь все в порядке. Проблема при очистке этого сайта заключается в том, что независимо от того, как вы получаете следующий набор элементов (либо «21 dalších ...», либо обычный paginator), он использует запрос AJAX, а не обычный доступ к странице. Таким образом, вам необходимо изучить через AJAX - есть ли у вас живой просмотрщик AJAX (в вашем браузере), который вы можете использовать, чтобы определить, как это сделать? – halfer

ответ

1

file_get_contents проигнорировал часть URL-адреса #xxxxx (fragment identifier) и не включил его в запрошенный URL-адрес. Это то, что пользовательский агент будет использовать на стороне клиента - скорее всего, на веб-сайте есть Javascript, который будет использовать AJAX для загрузки новой страницы результатов.

Вы можете видеть, соответствует ли страница Google AJAX Crawling Specification, хотя на основе вашего примера это не похоже. Если вы видите идентификаторы фрагментов «hash bang», такие как #!foo=bar, это хороший знак.

Итак, вам нужно будет наблюдать запросы AJAX в Firebug или similar и сами повторять те же запросы.

Смежные вопросы