Scrapy пустой ответ xpath - PullRequest
       32

Scrapy пустой ответ xpath

0 голосов
/ 13 октября 2018

Я пытаюсь получить URL изображений из этого URL: https://www.iproperty.com.my/sale/all-residential/.

Используя расширение Chrome Xpath Helper, я идентифицировал Xpath и использовал Scrapy Shell для получения ответа:

fetch("https://www.iproperty.com.my/sale/all-residential/")

response.xpath("//div[@class='cFwUMy']/div[@class='fUtkLG']/div[@class='slick-initialized slick-slider']/div[@class='slick-list']/div[@class='slick-track']/div[@class='slick-slide slick-active'][1]/div[@class='img-wrapper']/a/div[@class='cHKlDH']/img[@class='lazyautosizes lazyloaded']/@src")

Однако он ничего не возвращает.

Я также пытался:

response.xpath("//div[@class='img-wrapper']/a/div[@class='cHKlDH']")

Все еще не работает.

Как получить URL-адрес изображения со страницы?Мне удалось получить название, местоположение и цену, но я застрял в получении изображений.

РЕДАКТИРОВАТЬ1:

Странно, я пытался

response.xpath("div[@class='img-wrapper']/a")

Он возвращает ссылки, как и ожидалось, но

response.xpath("div[@class='img-wrapper']/a/div[@class='cHKlDH']")

и

response.xpath("//div[@class='cHKlDH']")

просто отказываются возвращать что-либо.

1 Ответ

0 голосов
/ 13 октября 2018

Scrapy загружает только начальные страницы ответа

Он не выполняет Javascript, как это делает наш обычный браузер.

Трюк, отключите Javascript в вашем браузере и затем проверьтеесли желаемый элемент существует или нет

На упомянутом выше веб-сайте они имеют ссылки на изображения в формате JSON в своем первоначальном ответе на странице, а после этого

В scrapy вы можете выполнить

re.findall(r"window.__INITIAL_STATE__ =(.*)window.__RENDER_APP_ERROR__", response.body, flags=re.DOTALL)

Он вернет вам этот код JSON, ключ https://jsoneditoronline.org/?id=bbef330441b24957aeaceedcea621ba7

listings > items, в нем есть все необходимые данные, цены / изображения

Вот полный рабочий код Python

https://repl.it/@UmairAyub/AdmirableHilariousSpellchecker

...