以下是我使用的代码:
from Sid.drivercommand import *
from Stocks.lot_size import symbol_list
from bs4 import BeautifulSoup
import datetime
from openpyxl import Workbook
p1_url = 'https://www.nseindia.com/marketinfo/companyTracker/mtOptionKeys.jsp?companySymbol='
p3_url = '&indexSymbol=NIFTY&series=EQ&instrument=OPTSTK&date=-'
symbol_list = ['ACC','SBIN','PNB']
loc = r"C:\Users\OneDrive\Stock Study"
loc_opt_data = r"C:\Users\OneDrive\Stock Study\Opt Data"
os.chdir(loc_opt_data)
date = 'Test_Data_'+ str(datetime.date.today()) + ".xlsx"
datewise_data = Workbook(date)
os.chdir(loc)
for symbol in symbol_list[0:1]:
url = p1_url+symbol+p3_url
raw_page = requests.get(url).text
soup = BeautifulSoup(raw_page, "lxml")
if len(raw_page) > 0:
datewise_data_sheet = datewise_data.create_sheet(symbol)
for table in soup.findAll('table'):
'# Fields: ' + ','.join([tr.text for tr in table.findAll('th')])
for row in table.findAll('tr'):
# ws1.append(([tr.text for tr in row.findAll('td')]))
datewise_data_sheet.append(([tr.text for tr in row.findAll('td')]))
# test.append(([tr.text for tr in row.findAll('td')]))
#print(symbol)
raw_page = 0
datewise_data.save(date)
由此生成的文件有数据,但每个符号有三组数据,而我只需要第一组/表
网页上的表中有表,因此代码会在第一个表中查找三次tr元素,在第二个表和行中查找相同的tr元素。findAll('td')会在第一个表td包含第二个表时查找第三次。 您只需查找一次数据,就可以使用:
而不是:
这将直接进入表中的表并给出一组结果
相关问题 更多 >
编程相关推荐