如何用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}")
关键步骤说明
- 筛选目标标签:通过
'var pagelist:'关键词快速定位存储目标数据的script标签 - 正则提取JSON:用正则精准匹配
{}包裹的JSON字符串,避免无关内容干扰 - 字典取值:将JSON字符串转为字典后,直接通过键名
totalPage获取对应值
若实际网页中pagelist使用单引号包裹键值,可在转换前添加替换:pagelist_str = pagelist_str.replace("'", '"')
内容的提问来源于stack exchange,提问作者gndps
相关产品推荐
相关产品推荐

