如何在beauthulsoup中刮取imagesrc

2024-10-01 13:45:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在这段代码中获取图像src

<img alt='Original Xiaomi Redmi Note 5 4GB RAM 64GB ROM Snapdragon S636 Octa Core Mobile Phone MIUI9 5.99" 2160*1080 4000mAh 12.0+5.0MP(China)' class="picCore" id="limage_32856997152" image-src="//ae01.alicdn.com/kf/HTB1WDJZbE_rK1Rjy0Fcq6zEvVXaS/Original-Xiaomi-Redmi-Note-5-4GB-RAM-64GB-ROM-Snapdragon-S636-Octa-Core-Mobile-Phone-MIUI9.jpg_220x220xz.jpg" itemprop="image"/>

我试过这个代码,但不起作用

images = soup.find('img').get('image-src')

在这里不需要使用src('i)来获得图像,但通常不需要使用src


Tags: 代码core图像imagesrcimgromram
3条回答

如果id是静态的,可以使用cssid选择器来选择元素,然后使用subset来获取img src属性

from bs4 import BeautifulSoup as bs

html = '''
<img alt='Original Xiaomi Redmi Note 5 4GB RAM 64GB ROM Snapdragon S636 Octa Core Mobile Phone MIUI9 5.99" 2160*1080 4000mAh 12.0+5.0MP(China)' class="picCore" id="limage_32856997152" image-src="//ae01.alicdn.com/kf/HTB1WDJZbE_rK1Rjy0Fcq6zEvVXaS/Original-Xiaomi-Redmi-Note-5-4GB-RAM-64GB-ROM-Snapdragon-S636-Octa-Core-Mobile-Phone-MIUI9.jpg_220x220xz.jpg" itemprop="image"/>
'''
soup = bs(html, 'lxml')
print(soup.select_one('#limage_32856997152')['image-src'])

如果id不是静态的,并且可以有多个id作为目标,那么您可能需要使用结合属性的类选择器

^{pr2}$

任何图像src,只需使用属性选择器

srcs = [img['image-src'] for img in soup.select('[image-src]')]

可以通过将标记视为字典来访问标记的属性。您可以作为.attrs直接访问该字典

soup.find('img').attrs['image-src']

查看this文档,我发现了适用于本例的find_all方法:

这对我很有效:

for link in soup.find_all('img'):
    print(link.get('image-src'))

这是我的完整代码:

^{pr2}$

结果是:

//ae01.alicdn.com/kf/HTB1WDJZbE_rK1Rjy0Fcq6zEvVXaS/Original-Xiaomi-Redmi-Note-5-4GB-RAM-64GB-ROM-Snapdragon-S636-Octa-Core-Mobile-Phone-MIUI9.jpg_220x220xz.jpg  

相关问题 更多 >