数据框中股票列表的网络抓取 vwap 值
web-scraping vwap value for list of stock in data frame
从 nse 网站抓取特定值 (vwap):
这里我有一个带有股票列表的数据框,我需要从 nse 网站获取每只股票的 vwap 值。
下面是重现代码。
stock_list = ['SKIPPER','NIPPOBATRY','RANEHOLDIN','OSWALAGRO','GINNIFILA','VOLTAMP','NACLIND','GALLANTT','ASAHISONG','KSL','UNICHEMLAB',
'TRENT','TIL','MMP','SHARDAMOTR','ARCHIES','MAGADSUGAR']
df = pd.DataFrame()
df['stock_list'] = stock_list
df['vwap_value'] = 0
如何再次抓取数据框中指定的股票名称的vwap值
https://www1.nseindia.com/index_nse.htm
so 在上面的 url 中,一旦此 url 被调用,第一个 stock_list 中的 SKIPPER
将被输入到 EQUITY 搜索框中,新的 url 页面被导航
https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=SKIPPER&illiquid=0&smeFlag=0&itpFlag=0
然后从新的 link.
获取 vwap 值
您可以替换 URL 中的股票名称以获得每个股票的 HTML 页:
https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=<stock_name>&illiquid=0&smeFlag=0&itpFlag=0
对于每个页面,您可以通过以下代码获取 vwap 值:
vwap = response.xpath("//span[@id='vwap']).xpath("string()").extract()
数据以 Json 格式嵌入页面,因此 BeautifulSoup 看不到它。您可以使用 json
模块加载它。
例如:
import json
import requests
from bs4 import BeautifulSoup
url = 'https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=SKIPPER&illiquid=0&smeFlag=0&itpFlag=0'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}
soup = BeautifulSoup(requests.get(url, headers=headers).content, 'html.parser')
data = json.loads(soup.select_one('#responseDiv').text)
# uncomment this to print all data:
# print(json.dumps(data, indent=4))
print('averagePrice:', data['data'][0]['averagePrice'])
打印:
averagePrice: 45.52
从 nse 网站抓取特定值 (vwap): 这里我有一个带有股票列表的数据框,我需要从 nse 网站获取每只股票的 vwap 值。 下面是重现代码。
stock_list = ['SKIPPER','NIPPOBATRY','RANEHOLDIN','OSWALAGRO','GINNIFILA','VOLTAMP','NACLIND','GALLANTT','ASAHISONG','KSL','UNICHEMLAB',
'TRENT','TIL','MMP','SHARDAMOTR','ARCHIES','MAGADSUGAR']
df = pd.DataFrame()
df['stock_list'] = stock_list
df['vwap_value'] = 0
如何再次抓取数据框中指定的股票名称的vwap值
https://www1.nseindia.com/index_nse.htm
so 在上面的 url 中,一旦此 url 被调用,第一个 stock_list 中的 SKIPPER
将被输入到 EQUITY 搜索框中,新的 url 页面被导航
https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=SKIPPER&illiquid=0&smeFlag=0&itpFlag=0
然后从新的 link.
您可以替换 URL 中的股票名称以获得每个股票的 HTML 页:
https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=<stock_name>&illiquid=0&smeFlag=0&itpFlag=0
对于每个页面,您可以通过以下代码获取 vwap 值:
vwap = response.xpath("//span[@id='vwap']).xpath("string()").extract()
数据以 Json 格式嵌入页面,因此 BeautifulSoup 看不到它。您可以使用 json
模块加载它。
例如:
import json
import requests
from bs4 import BeautifulSoup
url = 'https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=SKIPPER&illiquid=0&smeFlag=0&itpFlag=0'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}
soup = BeautifulSoup(requests.get(url, headers=headers).content, 'html.parser')
data = json.loads(soup.select_one('#responseDiv').text)
# uncomment this to print all data:
# print(json.dumps(data, indent=4))
print('averagePrice:', data['data'][0]['averagePrice'])
打印:
averagePrice: 45.52