Python Scrapy: объект ответа отличается от исходного кода в браузере
Я работаю над проектом с использованием Scrapy.
Все разыскиваемые поля, кроме одного, идеально очищаются. Содержимое отсутствующего поля просто не отображается в ответе Scrapy (как отмечено в оболочке scrapy), в то время как оно отображается, когда я использую свой браузер для посещения страницы. В ответе scrapy есть ожидаемые теги, но нет текста между тегами.
JavaScript не задействован, но это переменная, предоставляемая сервером (это текущее количество посещений этой конкретной страницы). Ифрейм тоже не задействован.
Уже установил пользовательский агент (в файле настроек), чтобы он соответствовал моему браузеру. Уже установите задержку загрузки (в файле настроек) на 5.
РЕДАКТИРОВАТЬ (дополнение):
Страница: http://www.fincaraiz.com.co/apartamento-en-venta/bogota/salitre-det-1337688.aspx
Xpath к требуемому элементу: //*[@id="numAdvertVisits"]
Что может быть причиной этой тайны?
1 ответ
Это загруженное значение ajax/javascript.
Какие шаги вы предприняли, чтобы определить, что JS не участвует? Я загрузил страницу без javascript, и хотя в этой области страницы содержалось заглушка ("Visitas"), реальные данные были записаны туда с помощью запроса ajax.
Вы по-прежнему можете загружать эти данные с помощью scrapy, он просто отправит дополнительный запрос к конечной точке URL, обычно доступной через встроенный ajax. Сервер возвращает количество посещений в формате XML с помощью сценария по адресу http://www.fincaraiz.com.co/WebServices/Statistics.asmx/GetAdvertVisits?idAdvert=1337688&idASource=40&idType=1001 (попробуйте загрузить этот сценарий, и вы см. количество посещений страницы, которую вы указали в исходном письме).
Есть еще один ajax-запрос, который возвращает "True" для этой страницы, но я не уверен, что на самом деле означают данные. Тем не менее, это может быть полезно: