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

基于BeautifulSoup查找静态资源相关元素的技术咨询

关于用BeautifulSoup抓取静态资源元素的问题解答

1. 常见静态资源相关HTML标签清单

除了你已经用到的标签,还有这些容易遗漏的类型:

  • link:除了rel="stylesheet"(样式表),还包括rel="preload"/rel="prefetch"(预加载的字体、脚本、图片等资源)、rel="icon"(站点图标)
  • img:各类图片资源(jpg/png/webp等)
  • script:外部JavaScript文件
  • video:视频资源
  • audio:音频资源
  • source:配合video/audio使用的媒体源文件
  • embed:嵌入的外部资源(如PDF、Flash)
  • object:嵌入的对象资源(如插件、媒体文件)
  • picture:响应式图片容器,内部包含source和img标签
  • iframe:嵌入的外部静态页面(按需考虑)

2. 替代多次调用findAll()的实现方式

方式一:用find_all接收标签列表参数

直接把目标标签名放在列表里传给find_all,再针对性过滤属性:

# 先获取所有目标标签
all_tags = souped.find_all(['link', 'img', 'script', 'video', 'audio', 'source', 'embed', 'object', 'picture'])
# 过滤出符合要求的link标签,同时保留其他标签
static_resources = []
for tag in all_tags:
    if tag.name == 'link':
        rel_attr = tag.get('rel', [])
        # 保留样式表和预加载类静态资源
        if 'stylesheet' in rel_attr or 'preload' in rel_attr:
            static_resources.append(tag)
    else:
        static_resources.append(tag)

方式二:使用CSS选择器(select方法)

BeautifulSoup支持CSS选择器,可一次性筛选多类标签和属性:

# 筛选样式表link、各类媒体和资源标签
static_resources = souped.select('link[rel="stylesheet"], img, script, video, audio, source, embed, object, picture')
# 如果需要包含预加载的link,可扩展选择器
static_resources = souped.select('link[rel="stylesheet"], link[rel="preload"], img, script, video, audio, source, embed, object, picture')

这种写法比多次调用find_all更简洁,也更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:42:37