[英]python requests not able to make connection to NSE india, Connection error
[英]Python, requests webscraping - NSE India gives emtpy list
我正在尝试使用从 NSE 中抓取数据的请求来寻找印度股市的涨幅最大的股票。 我在 yahoo Finance 上使用了同样的方法并且它有效,但在这里,我一直得到空列表作为结果。
这是我的代码:
import requests
from lxml import html
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}
resp = requests.get('https://www.nseindia.com/market-data/top-gainers-loosers', verify=False, headers=headers)
tree = html.fromstring(resp.content)
count = 1
stocks = []
for i in range(30):
name = tree.xpath('//*[@id="topgainer-Table"]/tbody/tr['+str(count)+']/td[1]/a')
print(name)
try:
stocks.append(name[0].text)
except:
pass
#name.text
count +=1
print(stocks)
作为 output 我得到 [ ] 打印了很多次(一个空列表)。 我认为问题出在 NSE 上,因为它有许多不同的表,它们都具有相同的 xpath。
有任何想法吗?
如果您检查网站,加载数据需要一些时间,因此您将无法从bs4
找到数据。
网络标签::
您可以从“网络”选项卡中找到它并搜索您可以从所附屏幕截图中获得的任何公司名称,然后找到 URL 并调用它,它将返回JSON
数据。 所以你可以提取你想要的数据
import requests
import pandas as pd
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"}
res=requests.get(r"https://www.nseindia.com/api/live-analysis-variations?index=gainers",headers=headers)
all_data=res.json()['NIFTY']['data']
df=pd.DataFrame(all_data)
URL 用于顶部松散者:: https://www.nseindia.com/api/live-analysis-variations?index=loosers
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.