Web Scrapping возвращает пустое значение, используя Xpath в Scrapy

Очень нужна помощь этого сообщества.

Мой вопрос заключается в том, что когда я использовал код

========================================================================= response.xpath("//div[содержит (@ класс,'проверьте цены-виджет-не спонсируется')]/ а / дел [содержит (@ класс,'чек-цены-виджет не спонсируемые-связь')]"). экстракт ()

введите описание изображения здесь

для извлечения имени поставщика в оболочке Scrapy вывод пуст. Я действительно не знал, почему это произошло, и мне кажется, что проблема в том, что информация на сайте обновляется динамически?

URL-адрес для этого веб-удаления: https://cruiseline.com/cruise/7-night-bahamas-florida-new-york-roundtrip-32860, и мне нужно указать имя поставщика и цену для каждого поставщика. Помимо прикрепленной фотографии скриншот "осмотреть".

Очень ценю помощь!

1 ответ

Вы должны всегда проверять исходный код HTML в вашем браузере (обычно с помощью Ctrl+U).

Таким образом, вы обнаружите, что нужная информация встроена в переменные Javascript с использованием JSON:

var partnerPrices = [{"pool":"9a316391b6550eef969c8559c14a380f","partner":"ncl.com","priority":0,"currency":"USD","data":{"32860":{"2018-02-25":{"Inside":579,"Suite":1199,"Balcony":699,"Oceanview":629},....
var sponsored_partners = [{"code":"CDCNA","name":"cruises.com","value":"cruises.com","logo":"\/images\/partner-logo-cruises-sm.png","logo_sprite":"partner-logo-cruises-com"},...

Так что вам нужно import jsonразобрать response.body (с помощью re или другой метод), а затем json.loads() проанализировал строки JSON, чтобы перебрать два массива.

Другие вопросы по тегам