【问题标题】:How to parse a JSON file from HTML into Python using BeautifulSoup?如何使用 BeautifulSoup 将 JSON 文件从 HTML 解析为 Python?
【发布时间】:2020-03-19 06:47:24
【问题描述】:

我有一个包含各种信息的 HTML 页面,例如:

<input class="json-data" id="init-data" type="hidden" value='{"keyboardShortcuts":[{"name":"xxxx","description":"yyyyy", > etc...

我怎样才能获得类似的东西

name = xxxx

到目前为止,这是我的代码,但每次它只打印 None:

content = page.read()
html = BeautifulSoup(content, "html.parser")
element = html.find("input", class_="json-data", value_="keyboardShortcuts")

【问题讨论】:

  • value_="keyboardShortcuts" 与您显示的元素不匹配,这只是值的 部分。为什么不使用id?另请注意,您必须从值中解析 JSON 以获取诸如 name 值之类的内容。
  • 那么你会怎么做呢?这是我第一次做这样的事情,我有点迷茫。
  • BS4 文档将告诉您如何通过 ID 获取元素,以及如何访问元素属性的值。

标签: python html json parsing


【解决方案1】:

拉出value属性,使用json读取,即可得到name键的值:

从 bs4 导入 BeautifulSoup

import json

content = '''
<input class="json-data" id="init-data" type="hidden" value='{"keyboardShortcuts":[{"name":"xxxx","description":"yyyyy"}]}
'''

html = BeautifulSoup(content, "lxml")
jsonData = json.loads(html.find('input', {'id':'init-data'})['value'])

print (jsonData['keyboardShortcuts'][0]['name'])

输出:

print (jsonData['keyboardShortcuts'][0]['name'])
xxxx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    相关资源
    最近更新 更多