我正在尝试从这个网址获取图像的网址: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']")
仍然不工作。
如何从页面获取图像的网址?我已经成功地获得了标题、位置和价格,但坚持要获取图像。
编辑1:
太奇怪了,我试过了
response.xpath("div[@class='img-wrapper']/a")
它按预期返回链接,但
response.xpath("div[@class='img-wrapper']/a/div[@class='cHKlDH']")
和
response.xpath("//div[@class='cHKlDH']")
只是拒绝退还任何东西。
Scrapy 只下载初始页面响应
它不像我们的普通浏览器那样执行Javascript。
技巧是,在浏览器中禁用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