BeautifulSoup与正则定位含ImageBlockATF的script标签及JSON提取
目标Script标签正则定位方案
针对你在Python+BeautifulSoup爬取中,遇到的页面script标签过多、无法定位嵌入图片JSON数据的目标代码块的问题,可通过以下正则方案实现精准定位:
核心匹配逻辑
目标script块存在全页面唯一固定标识:内容以P.when('A').register("ImageBlockATF", function(A){起始,该字符串无重复,可作为匹配核心锚点,避免与其他无关script块混淆。
可直接复用的代码实现
import re import requests # 替换为实际请求获取的完整网页HTML源码字符串 html_content = "请求返回的页面文本" # 编译匹配规则 target_script_pattern = re.compile( r'<script[^>]*>.*?P\.when\(\'A\'\)\.register\("ImageBlockATF",\s*function\(A\)\{.*?</script>', re.DOTALL ) match_result = target_script_pattern.search(html_content) if match_result: # 获取完整的目标script标签内容 matched_content = match_result.group() print("已成功定位目标script标签") else: print("未匹配到目标内容,请检查页面结构是否发生变动")
关键注意事项
- 正则规则中对JS语法包含的特殊字符(句点、圆括号、单引号)做了转义处理,不会因代码本身的符号导致匹配失效
- 采用非贪婪匹配逻辑,不会跨多个相邻script标签抓取无关内容
- 必须传入
re.DOTALL编译参数,否则无法识别跨多行书写的JS代码段 - 定位到目标script内容后,可继续通过正则截取
var data =到对应分号之间的文本,将JS语法的单引号替换为标准JSON要求的双引号,即可直接解析为Python字典使用
内容的提问来源于stack exchange,提问作者Sarath C
相关产品推荐
相关产品推荐

