[英]How do I work with Javascript Object Literals in Python
通過Beautifulsoup模塊,我提取了一個HTML頁面。 從該頁面,我進一步提取了Javascript腳本標簽。 在script標記內,有一個我想使用的對象文字。 您可以看到我想要實現的目標:
<script>
var main_obj = {
"link":"",
"stock":"",
"price":[{"qty":1000,"value":"100$"}, {"qty":10000,"value":"1000$"}]
}
</script>
我想訪問位於main_obj內部的price變量的對象常量內的qty和value變量。 謝謝
一種選擇是使用selenium
。 特別是,您可以使用execute_script
轉換為Python可以輕松解析的JSON字符串。
由於我不知道您正在使用的頁面的URL是什么,因此我剛剛創建了一個本地HTML文件,其中包含您的腳本標簽示例。 使用無頭不是必須的,我只是添加了該選項,因此瀏覽器窗口不會打開。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.