我正在使用BS4从足球统计信息页面提取信息。这是我开始的方式:
from bs4 import BeautifulSoup as bs
import requests
res = 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])',但是我想知道为什么我最初的努力失败了。
谢谢!
显然,.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)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句