Python 用Scrapy获得img src会得到奇怪的结果,为什么?

Python 用Scrapy获得img src会得到奇怪的结果,为什么?,python,scrapy,src,Python,Scrapy,Src,我正试着用Scrapy 1.4.0做网页垃圾。我想获得的是一个产品描述列表,以及该产品的img src。 问题是,当我运行spider时,它只返回前4个条目(description+相应的imgsrc),而条目列表的其余部分只是带有“none”imgsrc的描述。 通过分析网页源代码,我可以看出前5项与其他项之间的唯一区别是,前5项的class属性称为“lazy load”,而其他项有一个特殊的id,如“ML2178321”。 但是考虑到我没有在spider代码中引用类名,我不明白为什么在最后一

我正试着用Scrapy 1.4.0做网页垃圾。我想获得的是一个产品描述列表,以及该产品的img src。 问题是,当我运行spider时,它只返回前4个条目(description+相应的imgsrc),而条目列表的其余部分只是带有“none”imgsrc的描述。 通过分析网页源代码,我可以看出前5项与其他项之间的唯一区别是,前5项的class属性称为“lazy load”,而其他项有一个特殊的id,如“ML2178321”。 但是考虑到我没有在spider代码中引用类名,我不明白为什么在最后一项中行为会发生变化。 我怀疑JQuery/JS中有一些我不知道的东西。 以下是第一批物品容器之一的代码:


在后面的图像中没有
src
属性。以下是该图像的代码:

<img width='160' height='160' alt='Motorola Moto G4 4ta Gen 4g Lte 16gb Ram 2gb Libre Gtia' id='MLA643729195-I' class='loading' title='https://http2.mlstatic.com/motorola-celulares-smartphones-D_Q_NP_765168-MLA26028117832_092017-X.webp' data-src='https://http2.mlstatic.com/motorola-celulares-smartphones-D_Q_NP_765168-MLA26028117832_092017-X.webp' data-srcset='https://http2.mlstatic.com/motorola-celulares-smartphones-D_Q_NP_765168-MLA26028117832_092017-X.webp 1x, https://http2.mlstatic.com/motorola-celulares-smartphones-D_NQ_NP_765168-MLA26028117832_092017-V.webp 2x' />

图像URL位于
数据src
属性中,而不是
src

该站点正在使用一个延迟加载插件,它等待用户在设置
src
之前将图像滚动到视口中。此时,它将
数据src
属性复制到
src
。您发布的显然是发生这种情况后的DOM元素,而不是原始HTML源代码,
scrapy
看到的


如果脚本找不到
src
属性,您可以简单地更改脚本以查找
data src
属性。

我应用了您的解决方案,效果很好。谢谢但我想知道更多关于你的答案。数据src属性可以通过使用浏览器查看网页来查看?它是html代码的一部分还是plugin/js代码的一部分?在浏览器中使用
View Source
查看它,这显示了与Scrapy相同的html。这是HTML的一部分。我是通过检查我想报废的元件来完成的。非常感谢!:)元素显示Javascript修改后的DOM。Scrapy不执行JS。