1 回答
TA贡献1784条经验 获得超9个赞
问题是数据不是 json,它是一个 javascript 对象。即使您选择 json 并应用json.loads
它也会失败。因此,您将需要可以将 javascript 对象转换为 json 的第 3 方库。
我使用demjson
-
from bs4 import BeautifulSoup
import demjson
html = """<script type="text/javascript">
var chart;
var screenWidth = window.innerWidth * 0.935 * 1;
$(document).ready(function() {
series: [{
name: 'Water',
data: [[90, 50000],[91, 53000]]
},{
name: 'Tea',
data: [[90, 47000],[91, 53000]]
},{
name: 'Tonic',
data: [[90, 63000],[91, 68000]]
}]
});
});
</script>"""
script = soup.find("script").text.strip()
data = demjson.decode(script[script.index("{"):script.index("});")] + "}")
print(type(data))
print("-" * 10)
print(data)
输出:
<class 'dict'>
----------
{'series': [{'name': 'Water', 'data': [[90, 50000], [91, 53000]]}, {'name': 'Tea', 'data': [[90, 47000], [91, 53000]]}, {'name': 'Tonic', 'data': [[90, 63000], [91, 68000]]}]}
添加回答
举报