Flipkart.com 图片 src 在抓取后发生变化

Flipkart.com image src is changing after scraping

所以我试图抓取 flipcart.com 用于纯粹的学习目的,但我遇到了一个问题,不明白为什么。我试图从这个 link - https://www.flipkart.com/search?q=sofa 中抓取图像 src & 在我在开发工具中发现 src 是 -

之后
<img class="_396cs4 _3exPp9" alt="Muebles Casa Croma Leatherette 3 Seater  Sofa" src="https://rukminim1.flixcart.com/image/612/612/jvtujrk0/sofa-sectional/z/w/h/light-brown-na-colton-letheratte-light-brown-three-seater-sofa-original-imafghzgwdznm33t.jpeg?q=70">

但是当我试图在 scrapy 中抓取它时 shell 我得到了不同的结果 -

In [1]: response.xpath('//div[@class="CXW8mj _21_khk"]/img/@src').get()
Out[1]: '//img1a.flixcart.com/www/linchpin/fk-cp-zion/img/placeholder_fcebae.svg'

谁能告诉我如何解决这个问题,或者为什么 src 会改变。

您需要使用selenium获取数据。图像数据是动态加载的。这里是使用 scrapy.Selector 和 selenium 来提取数据。

from selenium import webdriver
from scrapy.selector import Selector
browser = webdriver.Firefox(executable_path='./geckodriver')
browser.get(url="https://www.flipkart.com/search?q=sofa")

page = browser.page_source
image_data = Selector(text=page)
print(image_data.xpath('//div[@class="CXW8mj _21_khk"]/img/@src').get())

输出

https://rukminim1.flixcart.com/image/612/612/jyeq64w0/sofa-sectional/u/k/b/blue-na-56101502sd00927-godrej-interio-blue-original-imaffpsrybgrhvxb.jpeg?q=70

注意:如果系统中没有安装selenium,则需要安装。