如何使用scrapy提取动态加载图像的src

时间:2017-04-12 08:04:04

标签: python scrapy

我目前正试图用scrapy刮取网站https://www.bloomingdales.com

在这个项目中,我试图提取每个产品页面中加载的主图像的网址,例如:

https://www.bloomingdales.com/shop/product/free-people-over-the-rainbow-beanie?ID=1791385&CategoryID=1006048#fn=ppp%3D%26spp%3D1%26sp%3D1%26rid%3D83%26spc%3D94%26rsid%3Dundefined%26pn%3D1|2|1|94

然而,每张图片都在网站上加载了图片请求,因此我无法通过xpath来定位图片网址。如何使用scrapy提取图像网址?

以下是我在Chrome开发者工具中看到的请求的屏幕截图:

1 个答案:

答案 0 :(得分:4)

电子商务网站在html正文中存储一些json数据然后让用户的浏览器将其解压缩到一个完整页面是很常见的。

对于此特定页面,如果您复制图片网址并在页面源中搜索,则可以看到存储在以下位置的所有产品数据:

<script id="pdp_data" type="application/json">some_json</script>

您可以使用scrapy获取此数据并将json解码为python词典:

data = response.xpath("//script[@id='pdp_data']/text()").extract_first()
import json
data = json.loads(data)
# then you can parse the data
data['product']['imageSource']
# '8/optimized/9216988_fpx.tif'