Python从htmlpag中提取json结构

2024-09-29 19:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,我正在阅读一个包含大量内容的html页面内容。 为此,我通过以下方式将网页读作字符串:

url = 'https://myurl.com/'
reqq = req.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
reddit_file = req.urlopen(reqq)
reddit_data = reddit_file.read().decode('utf-8')

如果我打印reddit_data,我可以正确地看到整个html内容。 现在,在它里面有一个类似json的结构,我想从中读取并提取一些字段。你知道吗

结构下方:

"dealDetails" : {
      "f240141a" : {
         "egressUrl" : "https://ccc.com",
         "title" : "ZZZ",
         "type" : "ghi",
      },
      "5f9ab246" : {
         "egressUrl" : "https://www.bbb.com/",
         "title" : "YYY",
         "type" : "def",
      },
      "2bf6723b" : {
         "egressUrl" : "https://www.aaa.com//",
         "title" : "XXX",
         "type" : "abc",
      },
}

我想做的是:找到dealDetails字段,然后为每个f240141a5f9ab2462bf6723b 获取egressURL、title和type值。你知道吗

谢谢


Tags: httpscomurl内容datatitlehtmltype
2条回答

试试这个

[nested_dict['egressUrl'] for nested_dict in reddit_data['dealDetails'].keys()]

要访问JSON的值,可以将其视为字典,并使用相同的语法来访问值。你知道吗

编辑-1:

确保您的reddit\u数据类型是字典。你知道吗

如果type(reddit_data)str。你知道吗

你需要做。。你知道吗

import ast
reddit_data = ast.literal_eval(reddit_data)

或者

import json
reddit_data = json.loads(reddit_data)
  • 如果你只是想知道如何访问白鹭,标题和类型。你可能只想看看下面的答案!但是要小心,因为除非您将HTML文件reddit\u数据转换为类似于字典的格式(将shaik moeed的答案稍加修改以返回标题和类型),否则以下代码将无法工作:
[(i['egressUrl'], i['title'], i['type']) for i in reddit_data['dealDetails'].keys()]
  • 但是,如果我没弄错的话,您缺少的部分是从HTML到JSON友好文件的转换。我个人使用的是eval函数,尽管它非常不受欢迎
dictionary = eval(reddit_data)

这将把整个文件转换成一个字典,我建议你只在文本中看起来像字典的部分使用它!(eval不受欢迎的一个原因是它不会将'true'/'false'这样的字符串转换为Python的true/false,请注意:)

希望有帮助!你知道吗

相关问题 更多 >

    热门问题