问题
我有以下Page01.htm
<!DOCTYPE html><html lang="it-IT"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <head><title>Title here</title></head>
<body>
<script id="TargetID" type="application/json"><![CDATA[
{ "name":"Kate", "age":22, "city":"Boston"}
]]>
</script><script id=“AnotherID” type="application/json"><![CDATA[{ "name":"John", "age":31, "city":"New York"}]]>
</script>
</body></html>
我想提取JSON中带有ID=TargetID
的脚本标记之间的信息。在
我做了什么
我编写了以下Python 3.6代码:
^{pr2}$现在,如果我查看vegas
变量的内部,我可以看到
[<script id="TargetID" type="application/json"><![CDATA[ {
> "name":"Kate", "age":22, "city":"Boston"} ]]> </script>]
但是如果我尝试删除脚本标记(使用this answer脚本),我会得到以下JsonZ
变量
'<html><body><p>[<![CDATA[\n{ "name":"Kate", "age":22, "city":"Boston"}\n]]>\n]</p></body></html>'
没有脚本标记但有另外3个标记(<html><body><p>
)完全无用。
我的目标是获取下面的字符串{ "name":"Kate", "age":22, "city":"Boston"}
,以便与pythonjson模块一起加载。在
它可以简化得多:
beauthulsoup几乎可以接受任何东西,并尝试将其转换为一个完整的HTML页面。这就是你收到
'<html><body> ...'
的原因。通常这是一件好事,因为HTML的格式可能很糟糕,但是BeautifulSoup仍然会处理它。在在您的例子中,提取json的一种方法如下所示。在
一旦你有了这个,你就可以把它变成一个Python字典,就像这样。在
^{pr2}$相关问题 更多 >
编程相关推荐