You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BeautifulSoup提取含连字符的HTML属性值?

如何提取HTML元素中含连字符的属性值?

我用BeautifulSoup编写了以下代码,提取src属性正常,但提取带连字符的data-src属性时失败:

from bs4 import BeautifulSoup as bs

soup = bs(requests.get(url).content, "html.parser")
for img in tqdm(soup.find_all("img"), "Extracting images"):
    img_url = str(img.attrs.get("data-src"))
    print(img_url)
    img_url = str(img.attrs.get("data"))
    print(img_url)

示例HTML代码:

<img alt="" class="lazy" src="https://www.url.com/assets/images/new-search-icon.svg"/>
<img alt="" class="lazyload" data-src="https://url.tv/bcci/photos/1354/887cffe6-0664-4146-9e7b-27b83d71db56.jpg"/>

可行解决方法

在BeautifulSoup中,提取带连字符的属性值有几种可靠方式:

  • 利用元素对象的get()方法:这是最简洁的方式,直接传入带连字符的属性名即可,和字典get()用法一致,还能避免空值转字符串的问题:

    data_src_url = img.get("data-src")
    if data_src_url:
        print(data_src_url)
    
  • 通过attrs字典索引:img.attrs本质是存储属性的字典,直接以带连字符的属性名为键取值:

    data_src_url = img.attrs.get("data-src")
    if data_src_url:
        print(data_src_url)
    

修正后的完整代码

from bs4 import BeautifulSoup as bs
import requests
from tqdm import tqdm

url = "目标页面URL"
soup = bs(requests.get(url).content, "html.parser")
for img in tqdm(soup.find_all("img"), "Extracting images"):
    # 提取src属性
    src_url = img.get("src")
    if src_url:
        print(f"src: {src_url}")
    # 提取data-src属性
    data_src_url = img.get("data-src")
    if data_src_url:
        print(f"data-src: {data_src_url}")

内容的提问来源于stack exchange,提问作者RajeshS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 23:47:04