粗糙的空xpath响应

时间:2018-10-13 06:40:02

标签: web-scraping scrapy screen-scraping

我正在尝试从以下网址获取图片的网址: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']")

仍然无法正常工作。

如何从页面获取图像的网址?我已经成功获得了标题,位置和价格,但仍然坚持获取图像。

EDIT1:

太奇怪了,我尝试了

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

它按预期返回链接,但是

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

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

只是拒绝返回任何东西。

1 个答案:

答案 0 :(得分:0)

Scrapy仅下载初始页面响应

它不像普通浏览器那样执行Javascript。

在浏览器中使用disable Javascript作为技巧,然后检查所需元素是否存在

在上述网站中,他们在初始页面响应中以及之后具有JSON格式的图像链接

您可以草草签入

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