【问题标题】:Converting 'bs4.element.NavigableString' to json将“bs4.element.NavigableString”转换为 json
【发布时间】:2014-09-21 07:11:12
【问题描述】:

我需要将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。

感谢您的帮助!

【问题讨论】:

  • 在未来,不要描述你试图做什么并说“它不起作用”,而是向我们展示你的代码,以及它是如何不起作用的(带有回溯的异常,或者预期值和实际值等)。很难猜出“使用普通 json 方法搜索……”是什么意思。

标签: python json beautifulsoup


【解决方案1】:

嗯,那个字符串不是有效的 JSON。 其中一部分是有效的 JSON。

特别是,它是一行 JavaScript 代码,它将一个 JavaScript 文字分配给一个 my_object 变量,该文字恰好被写为有效的 JSON。

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

【讨论】:

    猜你喜欢
    • 2012-10-30
    • 2019-02-05
    • 2021-08-16
    • 1970-01-01
    • 2019-02-04
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多