我正在尝试从以下网址获取图片的网址: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']")
只是拒绝返回任何东西。
答案 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代码