我正在try 获取beautiful Soup中的第二个srcset属性,原始html如下:

<picture class="card-picture ratio ratio-4x3">
<source srcset="/shop/media/L004D000_picture.PNG?context=bWFzdGVyfGltYWdlc3wzMDE3NTN8aW1hZ2UvcG5nfGgwMS9oMjcvODg0ODIyMDYxODc4Mi9MMDA0RDAwMF9waWN0dXJlLlBOR3wyZjRiZWE1NDU2MWU1MjUzMzU5MjAwNGVlYmIzY2MwNGQzODExMDI3NjNkMDE3YjQ4NGMwNjFlMGVkNTU2OWIy&amp;rmode=pad&amp;width=640&amp;rmode=pad&amp;width=640&amp;format=webp" type="image/webp"/>
<source srcset="/shop/media/L004D000_picture.PNG?context=bWFzdGVyfGltYWdlc3wzMDE3NTN8aW1hZ2UvcG5nfGgwMS9oMjcvODg0ODIyMDYxODc4Mi9MMDA0RDAwMF9waWN0dXJlLlBOR3wyZjRiZWE1NDU2MWU1MjUzMzU5MjAwNGVlYmIzY2MwNGQzODExMDI3NjNkMDE3YjQ4NGMwNjFlMGVkNTU2OWIy&amp;rmode=pad&amp;width=640&amp;rmode=pad&amp;width=640" type="image/jpeg"/>
<img alt="" class="card-img object-fit-contain is-contain" loading="lazy" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
</img>
</picture>

我的代码:

for result in results:
    imgel = result.find("source", attrs = {'srcset' : True})['srcset']

这返回第一个srcset值_我想获取png URL的第二个值

推荐答案

只需 Select 所有<source>个标签并使用常规索引即可:

from bs4 import BeautifulSoup

html_source = """\
<picture class="card-picture ratio ratio-4x3">
<source srcset="/shop/media/L004D000_picture.PNG?context=bWFzdGVyfGltYWdlc3wzMDE3NTN8aW1hZ2UvcG5nfGgwMS9oMjcvODg0ODIyMDYxODc4Mi9MMDA0RDAwMF9waWN0dXJlLlBOR3wyZjRiZWE1NDU2MWU1MjUzMzU5MjAwNGVlYmIzY2MwNGQzODExMDI3NjNkMDE3YjQ4NGMwNjFlMGVkNTU2OWIy&amp;rmode=pad&amp;width=640&amp;rmode=pad&amp;width=640&amp;format=webp" type="image/webp"/>
<source srcset="/shop/media/L004D000_picture.PNG?context=bWFzdGVyfGltYWdlc3wzMDE3NTN8aW1hZ2UvcG5nfGgwMS9oMjcvODg0ODIyMDYxODc4Mi9MMDA0RDAwMF9waWN0dXJlLlBOR3wyZjRiZWE1NDU2MWU1MjUzMzU5MjAwNGVlYmIzY2MwNGQzODExMDI3NjNkMDE3YjQ4NGMwNjFlMGVkNTU2OWIy&amp;rmode=pad&amp;width=640&amp;rmode=pad&amp;width=640" type="image/jpeg"/>
<img alt="" class="card-img object-fit-contain is-contain" loading="lazy" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
</img>
</picture>"""

soup = BeautifulSoup(html_source, "html.parser")

results = soup.select("picture")

for result in results:
    second_img = result.select("source")[1]
    print(second_img)

输出:

<source srcset="/shop/media/L004D000_picture.PNG?context=bWFzdGVyfGltYWdlc3wzMDE3NTN8aW1hZ2UvcG5nfGgwMS9oMjcvODg0ODIyMDYxODc4Mi9MMDA0RDAwMF9waWN0dXJlLlBOR3wyZjRiZWE1NDU2MWU1MjUzMzU5MjAwNGVlYmIzY2MwNGQzODExMDI3NjNkMDE3YjQ4NGMwNjFlMGVkNTU2OWIy&amp;rmode=pad&amp;width=640&amp;rmode=pad&amp;width=640" type="image/jpeg"/>

或: Select image/jpeg:

for result in results:
    jpeg_img = result.select_one('source[type="image/jpeg"]')
    print(jpeg_img)

或者如果您想要第一个jpeg或png:

for result in results:
    img = result.select_one('source[type="image/jpeg"], source[type="image/png"]')
    print(img)

Python相关问答推荐

Pandas 密集排名具有相同值,按顺序排列

重命名变量并使用载体中的字符串存储 Select 该变量

Python在通过Inbox调用时给出不同的响应

Python中使用Delivercio进行多个请求

请从Python访问kivy子部件的功能需要帮助

将numpy数组存储在原始二进制文件中

将整组数组拆分为最小值与最大值之和的子数组

如何标记Spacy中不包含特定符号的单词?

对于一个给定的数字,找出一个整数的最小和最大可能的和

将两只Pandas rame乘以指数

如何让Flask 中的请求标签发挥作用

如何制作10,000年及以后的日期时间对象?

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

Mistral模型为不同的输入文本生成相同的嵌入

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

如何在图中标记平均点?

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

Tkinter菜单自发添加额外项目

Polars asof在下一个可用日期加入

在pandas/python中计数嵌套类别