Python BeautifulSoup 获取图像 src 的 KeyError

Python BeautifulSoup getting KeyError for image src

我正在尝试从此 page 获取产品图片 url。我正在获取图像 src 但同时也收到此错误 KeyError: 'data-lazy-src'

这是我的代码:

image = soup.select('img.attachment-shop_single')

for i in image:
    img = i['data-lazy-src']
    print(img)

python shell 结果:

https://thedankvape.com/wp-content/uploads/2020/04/ACE-OF-SPADES.jpeg
Traceback (most recent call last):
  File "<pyshell#56>", line 2, in <module>
    img = i['data-lazy-src']
  File "C:\Users\Mick\AppData\Local\Programs\Python\Python39\lib\site-packages\bs4\element.py", line 1406, in __getitem__
    return self.attrs[key]
KeyError: 'data-lazy-src'

我正在获取图像源,但为什么我会收到密钥错误?这是 HTML 元素

>>>soup.select('img.attachment-shop_single')
[<img alt="ace of spades dank vapes" class="attachment-shop_single size-shop_single wp-post-image" data-lazy-src="https://thedankvape.com/wp-content/uploads/2020/04/ACE-OF-SPADES.jpeg" height="800" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20600%20800'%3E%3C/svg%3E" title="ace of spades dank vapes" width="600"/>, <img alt="ace of spades dank vapes" class="attachment-shop_single size-shop_single wp-post-image" height="800" src="https://thedankvape.com/wp-content/uploads/2020/04/ACE-OF-SPADES.jpeg" title="ace of spades dank vapes" width="600"/>]

如何抓取最后一个src元素图片linksrc="https://thedankvape.com/wp-content/uploads/2020/04/ACE-OF-SPADES.jpeg?

如评论中所述,有两个<img>和class "attachment-shop_single"。最安全的方法是 select 只有一个具有 data-lazy-src 属性:

import requests
from bs4 import BeautifulSoup


url = "https://thedankvape.com/product/ace-of-spades-dank-vapes/"
soup = BeautifulSoup(requests.get(url).content, "html.parser")

img = soup.select_one("[data-lazy-src]")
print(img["data-lazy-src"])

打印:

https://thedankvape.com/wp-content/uploads/2020/04/VAPE.png