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

Python BeautifulSoup爬取指定div内容返回空如何解决?

爬取Chrome网上应用店支持语言返回空的解决方法

失败原因

  • 代码存在基础语法错误:你写的第三行选择器class_ = "ta-x字符串未闭合,直接运行会抛出语法异常。
  • 选择器使用了动态混淆类名:你尝试匹配的C-b-Cd-Pg-ta、f-rd ta ta-kd-xg都是前端工程构建时自动生成的随机类名,页面版本迭代后类名会随时变更,无法作为稳定的定位依据。
  • 未处理页面动态渲染逻辑:Chrome网上应用店的扩展详情内容全部由JavaScript动态渲染生成,如果你直接用requests类库请求原始HTML,源码中根本不存在这些详情DOM节点,无论怎么调整选择器都会返回空结果。

正确实现方案

方案1:提取页面内嵌初始化数据(稳定性最高)

Chrome网上应用店会把扩展的全量元数据(含支持语言、评分、介绍等所有信息)直接内嵌在页面源码的window.INITIAL_DATA全局变量中,不需要运行JS就能提取,完全不受DOM结构、类名变更影响。
示例代码:

import requests
import re
import json

target_url = "替换为目标扩展的Chrome商店详情页URL"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
resp = requests.get(target_url, headers=headers)
resp.encoding = "utf-8"

# 正则匹配提取内嵌的初始化JSON数据
data_pattern = re.compile(r'window\.INITIAL_DATA = (.*?);', re.S)
match_res = data_pattern.search(resp.text)
if match_res:
    init_data = json.loads(match_res.group(1))
    # 打印init_data查看结构,支持语言字段存储在扩展元数据的languages字段中,按层级取值即可
    # 不同页面版本数据层级可能有微调,直接遍历找languages字段即可拿到全量支持语言列表
    print(init_data)

方案2:JS渲染后按固定文本特征定位

如果不想解析JSON结构,可以用支持JS渲染的工具(Playwright/Selenium)加载页面,等DOM渲染完成后,不使用动态类名,而是通过固定的“语言”标签文本定位对应内容节点,不受类名变更影响。
以Playwright为例的示例代码:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36")
    page.goto("替换为目标扩展的Chrome商店详情页URL")
    # 等待页面网络请求空闲,确保内容渲染完成
    page.wait_for_load_state("networkidle")
    # 定位文本为“语言:”的标题节点,取其相邻的内容节点文本即为支持语言列表
    support_langs = page.locator("dt:has-text('语言:') + dd").inner_text()
    print(support_langs)
    browser.close()

注意:如果坚持要用BeautifulSoup解析,需要先通过上述JS渲染工具拿到渲染完成后的完整HTML(调用page.content()即可获取),再传入BS4做解析,定位时不要使用随机生成的短类名,优先通过固定文本、固定属性、节点相邻关系定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:01:20