将'bs4.element.NavigableString'转换为json
我需要把一个 bs4.element.NavigableString
(这是来自Beautiful Soup的一个东西:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#navigablestring)转换成一个json字符串。
我正在使用Beautiful Soup进行网页抓取,返回的结果看起来像是一个json对象,格式大概是这样的(没有美化过的格式):
my_object = {"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
我尝试用普通的json方法去查找 my_object
,但是没有成功,也试过用Beautiful Soup的方法去查找它。我还查过怎么把 bs4.element.NavigableString
转换成json。
谢谢你的帮助!
1 个回答
1
嗯,这个字符串不是有效的JSON格式。其中的一部分是有效的JSON。
具体来说,它是一行JavaScript代码,这行代码把一个恰好写成有效JSON格式的JavaScript字面量赋值给了一个叫my_object
的变量。
如果你想解析这个JSON,你需要把它从其他部分分离出来。比如:
s = '''my_object = {"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}'''
jsvar, _, jsvalue = s.partition('=')
value = json.loads(jsvalue)