python - 怎么刮
问题描述
我正在尝试抓取 amazon(in) 网站。这是我所指的产品页面的链接。
我正在尝试抓取 ul > li 中存在的图像的 url,并在页面左上角的 span 标签中进一步向下。
我需要的最终结果是所有图像缩略图的列表,但不是视频缩略图
以下命令可以正常工作,并为我提供所有缩略图的所有 url
response.xpath('*//div[@id="altImages"]/ul/li/span[@class="a-list-item"]/span/span/span/span/img/@src').extract()
上述命令的问题是我无法区分图像属于视频缩略图还是图像缩略图。
为此,我使用以下命令来获取属于图像的缩略图:
response.xpath('*//div[@id="altImages"]/ul/li[contains(@class,"imageThumbnail")]/span[@class="a-list-item"]/span/span/span/span/img/@src').extract()
``````````
and
``````````
response.xpath('*//div[@id="altImages"]/ul/li[@class="a-spacing-small item imageThumbnail a-declarative"]/span[@class="a-list-item"]/span/span/span/span/img/@src').extract()
class="a-spacing-small item imageThumbnail a-declarative" 应该只给我那些具有类 'imageThumbnail' 的元素。但我得到的是一个空列表
我在输出中所期望的只是属于“imageThumbnail”类的图像的 url,在我们的示例中应该只有 5 个
这是我得到的输出链接:https ://imgur.com/a5wsZh1
解决方案
我建议你CSS
在这里使用选择器,特别是因为你正在处理类。要选择您可以使用的所有非视频缩略图:
response.css('#altImages li.item:not(.videoBlockIngress) img::attr(src)').getall()
或者,如果只想获得视频拇指:
response.css('#altImages .videoBlockIngress img::attr(src)').getall()
推荐阅读
- javascript - JavaScript 不工作。显示无法读取属性
- ios - 清单文件 xamarin ios 应用程序
- excel - 如何使用多个 if/or 参数进行 vlookup
- c# - `PowerShell.Create()` 返回 null
- python - 删除重复项不适用于 python
- scala - 在 Scala 中创建 RDD[(ImmutableBytesWritable, Result)]
- javascript - 将数据从子组件传输到父组件
- email - 使用外部服务提供商发送电子邮件有什么意义?
- python - Python - 用匹配的对值替换正则表达式匹配
- vba - 将用户窗体引入 Forefront Excel VBA