如何用Python提取HTML文件中script标签内的hobbies列表
用Python提取HTML中script标签内的hobbies列表
所需依赖
先安装BeautifulSoup4库:
pip install beautifulsoup4
实现步骤与代码
- 获取HTML内容(示例用字符串演示,实际可从本地文件读取或网络请求获取)
- 解析HTML定位目标script标签(通过
type="text/json"属性匹配) - 提取标签内的JSON文本并解析
- 直接取出
hobbies列表
完整代码示例:
from bs4 import BeautifulSoup import json # 示例HTML内容,实际场景可替换为文件读取或接口返回内容 html_content = ''' <script type="text/json" placeholder-data="1">{"name":"john","args":{"id":989,"hobbies":["gardening","boxing","guitar","hunting"],"is_rookie":false}}</script> ''' # 解析HTML soup = BeautifulSoup(html_content, 'html.parser') # 定位目标script标签 script_tag = soup.find('script', {'type': 'text/json'}) if script_tag: # 提取标签内的JSON字符串 json_data = script_tag.string # 解析JSON格式数据 data = json.loads(json_data) # 取出hobbies列表 hobbies = data['args']['hobbies'] print(hobbies) else: print("未找到目标script标签")
运行后输出:
['gardening', 'boxing', 'guitar', 'hunting']
补充说明
- 若页面存在多个同类型script标签,可通过
placeholder-data="1"属性进一步精准定位,把find()的参数改成{'type': 'text/json', 'placeholder-data': '1'}即可 - 若从本地HTML文件读取内容,可替换为:
with open('your_html_file.html', 'r', encoding='utf-8') as f: html_content = f.read()
内容的提问来源于stack exchange,提问作者user2505650
相关产品推荐
相关产品推荐

