gpt4 book ai didi

python - 如何从 selenium python 中获取 JSON

转载 作者:行者123 更新时间:2023-11-28 19:48:59 24 4
gpt4 key购买 nike

我的页面返回包含 id: 14 的 JSON http 响应

selenium python 有办法抓取这个吗?我在网上搜索但找不到任何解决方案。现在我想知道也许这是不可能的?我可以从数据库中获取这个 id,但我试图避免这种情况。请告诉我是否有任何解决方法。谢谢

最佳答案

困难的根源在于,当浏览器返回原始 JSON 数据时,它会将其包装在一小段 HTML 中以使其在屏幕上对用户可见。

当我访问https://httpbin.org/user-agent时例如,在 Firefox 中,以下原始 JSON 出现在我的浏览器窗口中:

{"user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0"
}

但实际上 Firefox(和 Chrome)已将 JSON 包装在一些额外的 HTML 中,以创建它可以实际显示的文档。这是 Firefox 将其包装在其中的 HTML,我可以通过计算表达式 document.documentElement.innerHTML 在 JavaScript 控制台中看到它:

<head><link rel="alternate stylesheet" type="text/css"
href="resource://gre-resources/plaintext.css" title="Wrap Long Lines"></head>
<body><pre>{"user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:42.0)
Gecko/20100101 Firefox/42.0"
}
</pre></body>

如另一个答案中所建议的,使用 BeautifulSoup 来解析 HTML 有两个严重的缺点:它为您的项目引入了新的依赖项,并且与利用浏览器已经解析的事实相比,它的速度也相当慢HTML 并准备好生成的 DOM 供您使用。

要让浏览器为您提取 JSON,只需询问 <body> 中的文本即可元素,浏览器添加的所有额外结构将被排除并返回纯 JSON:

driver.find_element_by_tag_name('body').text

或者,如果您希望将其解析为 Python 数据结构:

import json
json.loads(driver.find_element_by_tag_name('body').text)

关于python - 如何从 selenium python 中获取 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com