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, чтобы перебрать два массива.