javascript - 如何在 Python 中使用 Javascript 对象文字

标签 javascript python json python-3.x beautifulsoup

通过 Beautifulsoup 模块,我提取了一个 HTML 页面。从该页面中,我进一步提取了 Javascript 脚本标签。在脚本标签内,有一个我想使用的对象文字。您可以看到我想要实现的目标:

<script>
            var main_obj = {

            "link":"",
            "stock":"",
            "price":[{"qty":1000,"value":"100$"}, {"qty":10000,"value":"1000$"}]

           } 

</script>

我想访问 main_obj 内的价格变量的对象文字内的数量和值变量。谢谢

最佳答案

一种选择是使用 selenium 。特别是,您可以使用 execute_script转换为 Python 可以轻松解析的 JSON 字符串。

由于我不知道您正在使用的页面的 URL 是什么,因此我刚刚创建了一个本地 HTML 文件,其中包含您的脚本标记示例。使用 headless 并不是强制性的,我只是添加了该选项,因此浏览器窗口不会打开。

test.html

<!DOCTYPE html>
<html>
<body>
<script>
    var main_obj = {
        "link": "",
        "stock": "",
        "price": [{"qty": 1000, "value": "100$"}, {"qty": 10000, "value": "1000$"}]
    }
</script>
</body>
</html>

脚本

In[2]: import os
  ...: import json
  ...: 
  ...: from selenium import webdriver
  ...: 
  ...: chrome_options = webdriver.ChromeOptions()
  ...: chrome_options.add_argument('--headless')
  ...: driver = webdriver.Chrome(chrome_options=chrome_options)
  ...: 
  ...: driver.get('file://{}/test.html'.format(os.getcwd()))
  ...: json_string = driver.execute_script('return JSON.stringify(main_obj)')
  ...: driver.quit()
  ...: 
  ...: json_data = json.loads(json_string)
In[3]: json_data
Out[3]: 
{'link': '',
 'stock': '',
 'price': [{'qty': 1000, 'value': '100$'}, {'qty': 10000, 'value': '1000$'}]}
In[4]: for item in json_data['price']:
  ...:     print('Quantity: {:d}\tValue: ${:.2f}'.format(
  ...:         item['qty'], float(item['value'].rstrip('$'))
  ...:     ))
  ...: 
Quantity: 1000  Value: $100.00
Quantity: 10000 Value: $1000.00

关于javascript - 如何在 Python 中使用 Javascript 对象文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50709402/

相关文章:

javascript - 在 Firefox 29+ 上使用 localStorage 时出现 IO 错误?

javascript - 使用 flex display 时避免挤压元素

javascript - 如何使用 nodeJS 从 JSON 对象中删除项目?

c# - 将此 Json 转换成 C# 中的正确类结构是什么?

jquery - wcf REST 服务和 JQuery Ajax 帖子 : Method not allowed

javascript - 无法使用 Sails.js 和 Node 机器 mailgun 发送电子邮件

python - Pygame:无法打开文件。同一目录

python - Quandl 从 python 下载 wiki EOD 股票价格 - 如何?

python - 在最小值之前的每列值中找到最大值

json - 将 curl 命令转换为 Powershell