首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中使用Javascript对象文字

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

Stack Overflow用户
提问于 2018-06-06 05:46:13
回答 1查看 152关注 0票数 0

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

代码语言:javascript
复制
<script>
            var main_obj = {

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

           } 

</script>

我想访问价格变量的对象文字中的qty和value变量,它在main_obj中。谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-06 07:31:15

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

因为我不知道您正在处理的页面的URL是什么,所以我刚刚创建了一个本地HTML文件,其中包含了您的脚本标记示例。使用headless并不是必须的,我只是添加了这个选项,这样浏览器窗口就不会打开。

test.html

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>
<script>
    var main_obj = {
        "link": "",
        "stock": "",
        "price": [{"qty": 1000, "value": "100$"}, {"qty": 10000, "value": "1000$"}]
    }
</script>
</body>
</html>

脚本

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50709402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档