使用请求和openpyxl将数据写入三次而不是一次?

2024-09-27 21:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我使用的代码:

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)

由此生成的文件有数据,但每个符号有三组数据,而我只需要第一组/表


Tags: textinfromimporturlfordatadate
1条回答
网友
1楼 · 发布于 2024-09-27 21:29:12

网页上的表中有表,因此代码会在第一个表中查找三次tr元素,在第二个表和行中查找相同的tr元素。findAll('td')会在第一个表td包含第二个表时查找第三次。 您只需查找一次数据,就可以使用:

table = soup.findAll('table')[1]
for row in table.findAll('tr'):

而不是:

for table in soup.findAll('table'):
    for row in table.findAll('tr'):

这将直接进入表中的表并给出一组结果

相关问题 更多 >

    热门问题