将 html 源代码转换为 json 对象

Posted

技术标签:

【中文标题】将 html 源代码转换为 json 对象【英文标题】:Convert html source code to json object 【发布时间】:2017-09-14 03:06:49 【问题描述】:

我正在从一个网站获取许多页面的 html 源代码,我需要将其转换为 json 对象并与 json doc 中的其他元素结合。 .我看过很多关于同一主题的问题,但没有一个是有帮助的。

我的代码:

url = "https://totalhash.cymru.com/analysis/?1ce201cf28c6dd738fd4e65da55242822111bd9f"
htmlContent = requests.get(url, verify=False)
data = htmlContent.text
print("data",data)
jsonD = json.dumps(htmlContent.text)
jsonL = json.loads(jsonD)

ContentUrl=' \"url\" : \"'+str(urls)+'\" ,'+"\n"+' \"uid\" : \"'+str(uniqueID)+'\" ,\n\"page_content\" : \"'+jsonL+'\" , \n\"date\" : \"'+finalDate+'\"'

上面的代码给了我 unicode 类型,但是,当我将该输出放入 jsonLint 时,它给了我无效的 json 错误。有人可以帮我理解如何将完整的 html 转换为 json 对象吗?

【问题讨论】:

尝试使用flask模块的jsonify()方法。 url的来源不返回json。要从 HTML 中获取元素值,您需要使用 BeautifulSoup 或 lxml 等 你在这里做了一些很奇怪的事情。为什么要转储到 JSON,然后立即加载,然后然后手动构建 JSON 字符串? @SatishGarg 我正在使用漂亮的汤进行进一步处理,但我也在尝试保存原始 html。 @DanielRoseman 我对此很陌生,所以我不知道我在做什么我只是想以 json 格式制作。 【参考方案1】:

jsonD = json.dumps(htmlContent.text) 将原始 HTML 内容转换为 JSON 字符串表示。 jsonL = json.loads(jsonD) 将 JSON 字符串解析回常规字符串/unicode 对象。这会导致无操作,因为dumps() 所做的任何转义都会被loads() 还原。 jsonL 包含与htmlContent.text 相同的数据。

尝试使用json.dumps 生成最终的 JSON,而不是手动构建 JSON:

ContentUrl = json.dumps(
    'url': str(urls),
    'uid': str(uniqueID),
    'page_content': htmlContent.text,
    'date': finalDate
)

【讨论】:

它就像魅力一样。也感谢您使我的理解更好。我点击了接受答案,但不知道为什么它不起作用

以上是关于将 html 源代码转换为 json 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何将由代码创建的 html 表转换为 json 对象? AngularJS

将表单数据转换为 JSON 对象 [重复]

在 Javascript 中将 JSON 转换为 HTML

使用eval()将json字符串转换为对象要多加一个小括号

做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法

将 JSON 对象转换为 Buffer 并将 Buffer 转换为 JSON 对象