Ваши результаты пусты, потому что Scrapy получает ответ, который не имеет большого содержания. Это можно увидеть, запустив оболочку scrapy из своего терминала и отправив запрос на страницу, которую вы пытаетесь сканировать.
scrapy shell 'https://www.agoda.com/holiday-
inn-express-kuala-lumpur-city-centre/hotel/kuala-lumpur-my.html?checkIn=2020-04-14&los=1&adults=2&rooms=1&searchrequestid=41af11cc
-eaa6-42cc-874d-383761d3523c&travellerType=1&tspTypes=9'
Затем вы можете просмотреть ответ, полученный scrapy, запустив: view(response)
That должен открыть ответ, полученный и сохраненный scrapy в вашем браузере. Как вы должны видеть, нет отзывов для извлечения.
Кроме того, поскольку вы пытаетесь извлечь некоторую информацию из span-элементов, вы можете запустить response.css('span').extract()
, и вы увидите, что есть некоторые span- элементы в ответе, но ни один из них не имеет класса, который имеет какое-либо отношение к Reviews.
Итак, чтобы подвести итог, agoda отправляет вам совершенно пустой ответ. Как следствие скрапинг извлекает пустые списки. Возможные причины: Agoda выяснила, что вы пытаетесь сканировать их веб-сайт, например, на основе вашего пользовательского агента, и поэтому скрывает контент от вас - или они используют javascript для генерации контента.
Чтобы решить вашу проблему, вы должны либо использовать agoda api, либо ознакомиться со спуфингом пользовательского агента, либо проверить пакет селеном, который может помочь с javascript -высокими веб-сайтами.