为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Beautiful Soup 从 HTML 中提取特定的脚本元素

如何使用 Beautiful Soup 从 HTML 中提取特定的脚本元素

喵喵时光机 2023-08-08 09:51:00
我正在使用 BS4 从足球统计页面提取信息。我是这样开始的:from bs4 import BeautifulSoup as bsimport requestsres = requests.get(url)soup = bs(res.content, 'lxml')scripts = soup.find_all('script')scripts = [script for script in scripts]这成功地将所有脚本元素作为列表返回。我需要提取特定的脚本元素具体来说,其开头如下: <script>    var teamsData = JSON.parse('\x7B\x2271\x22\x3A\x7B\x22id\x22\x3A\x2271\x22,\x22title\x22\x3A\x22Aston\x20Villa\x22,\x22history\x22\x3A\x5B\x5D\x7D,\x2272\x22\x3A\x7B\x22id\x22\x3A\x2272\x22...</script>我尝试了以下代码的各种迭代,但输出始终打印为空白:for script in scripts:     if 'teamsData' in script.text:         print(script)我总是可以简单地使用“print(scripts[2])”,但我想知道为什么我最初的努力失败了。
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

显然,.text脚本标签始终为空字符串。但是,您可以从以下位置获取标签的内容.children


from bs4 import BeautifulSoup

from io import StringIO


html = """

<script>

let a = "Hello";

</script>

"""

b = StringIO(html)

soup = BeautifulSoup(b, 'lxml')


for e in soup.find_all('script'):

    print(repr(e.text))

    print(repr(''.join(e.children)))


查看完整回答
反对 回复 2023-08-08
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您可以使用以下方式.string访问<script>字符串:


import re

import json

from bs4 import BeautifulSoup



html_doc = '''<script>

    var teamsData = JSON.parse('\x7B\x2271\x22\x3A\x7B\x22id\x22\x3A\x2271\x22,\x22title\x22\x3A\x22Aston\x20Villa\x22,\x22history\x22\x3A\x5B\x5D\x7D,\x2272\x22\x3A\x7B\x22id\x22\x3A\x2272\x22\x7D\x7D');

</script>'''


soup = BeautifulSoup(html_doc, 'html.parser')


script_string = soup.find('script').string

print(script_string)

印刷:


var teamsData = JSON.parse('{"71":{"id":"71","title":"Aston Villa","history":[]},"72":{"id":"72"}}');

要解析JSON数据,可以使用re/ jsonmodules。例如:


data = re.search(r"JSON\.parse\('(.*?)'\);", script_string).group(1)

data = json.loads(data)


for k, v in data.items():

    print(k, v)

印刷:


71 {'id': '71', 'title': 'Aston Villa', 'history': []}

72 {'id': '72'}


查看完整回答
反对 回复 2023-08-08
  • 2 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信