将'bs4.element.NavigableString'转换为json

时间:2014-07-29 19:21:16

标签: python json beautifulsoup

我需要将bs4.element.NavigableString(来自美丽的汤:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#navigablestring)转换为json字符串。

我正在使用漂亮的汤来刮,而且我正在使用看起来,就像返回的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,但它不起作用,并试图用漂亮的汤方法搜索它。我还搜索了如何将bs4.element.NavigableString转换为json。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

那个字符串不是有效的JSON。 部分是有效的JSON。

特别是,它是一行JavaScript代码,用于分配恰好被编写为my_object变量的有效JSON的JavaScript文字。

如果要解析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)