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

如何用Python通过Soup获取指定script标签中的totalPage值?

提取script标签中pagelist的totalPage值

你当前的代码仅打印所有script标签文本,未做针对性筛选和数据提取。可按以下步骤实现需求:

  • 遍历所有script标签,筛选出包含var pagelist:的目标标签内容
  • 从目标文本中剥离出pagelist对应的JSON格式字符串
  • 将字符串转为Python字典,直接获取totalPage值

完整代码示例

from bs4 import BeautifulSoup
import re
import json

# 假设网页响应内容存储在html变量中
html = """
<script>
var 1 
var 2
</script>
some data

<script>
var pagename:{somedata};
var pagelist:{"totalData":549,"totalPage":12,"pageSize":48,"currentPage":1};
</script>
"""

soup = BeautifulSoup(html, 'html.parser')
all_scripts = soup.find_all('script')

for script in all_scripts:
    script_text = script.text.strip()
    # 定位包含pagelist变量的script标签
    if 'var pagelist:' in script_text:
        # 用正则匹配pagelist后的JSON结构
        match_result = re.search(r'var pagelist:({.*?});', script_text)
        if match_result:
            pagelist_str = match_result.group(1)
            # 转换为Python字典
            pagelist_dict = json.loads(pagelist_str)
            # 提取totalPage值
            total_page = pagelist_dict.get('totalPage')
            print(f"totalPage值: {total_page}")

关键步骤说明

  1. 筛选目标标签:通过'var pagelist:'关键词快速定位存储目标数据的script标签
  2. 正则提取JSON:用正则精准匹配{}包裹的JSON字符串,避免无关内容干扰
  3. 字典取值:将JSON字符串转为字典后,直接通过键名totalPage获取对应值

若实际网页中pagelist使用单引号包裹键值,可在转换前添加替换:pagelist_str = pagelist_str.replace("'", '"')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:40:29