我试图从网页上获取VIX的值。
我正在使用的代码:
raw_page = requests.get("https://www.nseindia.com/live_market/dynaContent/live_watch/vix_home_page.htm").text
soup = BeautifulSoup(raw_page, "lxml")
vix = soup.find("span",{"id":"vixIdxData"})
print(vix.text)
这给了我:
''
如果我看到vix,
<span id="vixIdxData" style=" font-size: 1.8em;font-weight: bold;line-height: 20px;">/span>
在网站上元素有文字
<span id="vixIdxData" style=" font-size: 1.8em;font-weight: bold;line-height: 20px;">15.785/span>
我希望通过使用请求获得15.785
值。
答案 0 :(得分:1)
您要查找的数据在页面来源中不可用。并且requests.get(...)
只为您提供没有通过JavaScript动态添加的元素的页面源。但是,您仍然可以使用requests
模块获取它。
在“网络”选项卡的开发人员工具中,您可以看到名为VixDetails.json
的文件。正在向https://www.nseindia.com/live_market/dynaContent/live_watch/VixDetails.json
发送请求,该请求以JSON格式返回数据。
您可以使用.json()
模块的内置requests
功能访问它。
r = requests.get('https://www.nseindia.com/live_market/dynaContent/live_watch/VixDetails.json')
data = r.json()
vix_price = data['currentVixSnapShot'][0]['CURRENT_PRICE']
print(vix_price)
# 15.7000
答案 1 :(得分:0)
当您在网络浏览器中打开页面时,getIndiaVixData.js脚本会将文本(例如15.785)插入span
元素。
当您在Python中使用requests
获取页面时,仅检索HTML代码并且不进行JavaScript处理。因此,span元素保持为空。
通过使用requests
单独解析页面的HTML代码来获取数据是不可能的。