在使用Beautiful Soup时,有时候我们可能会遇到一些包含脚本的HTML页面,而这些脚本中包含我们需要的函数数据。但是,Beautiful Soup默认会将这些脚本也作为HTML的一部分解析,导致无法直接获取到函数数据。下面是一种解决方案:
示例代码如下:
import re
from bs4 import BeautifulSoup
# 假设这是我们需要处理的HTML页面
html = '''
Beautiful Soup and
'''
# 使用Beautiful Soup将HTML页面解析成soup对象
soup = BeautifulSoup(html, 'html.parser')
# 找到包含函数数据的script标签
script_text = soup.find('script').text
# 使用正则表达式从script标签中提取函数数据
pattern = r'function\s+(\w+)\(({.*})\)\s+{([\s\S]*)}'
match = re.match(pattern, script_text)
function_name = match.group(1)
params = match.group(2)
function_body = match.group(3)
# 将提取出的函数数据使用Python的eval函数解析执行
function_text = f'def {function_name}({params}):\n {function_body}'
exec(function_text)
# 调用执行后的函数
result = add(3, 5)
print(result) # 输出 8