如何打印Beautiful Soup中findAll返回结果里首个source标签的data-srcset链接
代码实现逻辑
前提
你已经通过BeautifulSoup的findAll方法拿到了目标div节点列表,示例获取代码如下(如果你还没写这部分可以参考):
import requests from bs4 import BeautifulSoup # 请求网页部分 url = "你的目标网页地址" resp = requests.get(url) soup = BeautifulSoup(resp.text, 'html.parser') # 已拿到的目标div节点列表 div_list = soup.find_all('div', class_='nfl-c-photo-album__picture-wrapper')
核心提取代码
img_urls = [] for div_node in div_list: # 定位嵌套的source标签 picture_tag = div_node.find('picture') if not picture_tag: continue source_tag = picture_tag.find('source') if not source_tag or 'data-srcset' not in source_tag.attrs: continue # 处理srcset内容提取首个链接 srcset_raw = source_tag['data-srcset'] # 按逗号拆分取第一条,去除空格后拆分掉末尾的尺寸标识 first_img_url = srcset_raw.split(',')[0].strip().split()[0] img_urls.append(first_img_url)
注意事项
- 代码中加入了多层非空校验,避免部分节点结构缺失导致的
AttributeError报错 - data-srcset属性的标准格式为多组
链接 尺寸标识用逗号分隔,所以拆分后要过滤掉尺寸标识才能拿到纯链接 - 如果你确认所有目标节点结构完全一致,可以去掉非空校验简化代码
内容的提问来源于stack exchange,提问作者chickenbutt
相关产品推荐
相关产品推荐

