У меня есть код ниже, который очищает веб-данные с помощью BeautifulSoup. Я использую два разных цикла for для получения двух разных наборов данных: name
и value
from bs4 import BeautifulSoup
import requests
import csv
source = requests.get('https://finance.yahoo.com/quote/' + ticker + '/key-statistics?p=' + ticker).text
soup = BeautifulSoup(source, 'lxml')
csv_file = open('yahoo_key_stats_grab.csv', 'w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['name', 'value'])
def yahoo_key_stats_grab(ticker):
for stat in soup.find_all('span')[12:21]:
name = stat.text
print(name)
csv_writer.writerow([name])
for stat in soup.find_all('td', class_='Fz(s) Fw(500) Ta(end)'):
if len(str(stat.text)) > 6:
break
else:
print(stat.text)
csv_file.close()
Если я запускаю код yahoo_key_stats_grab('MIC')
, я получаю следующий вывод: это именно то, что я хочу.
Market Cap (intraday)
Enterprise Value
Trailing P/E
Forward P/E
PEG Ratio (5 yr expected)
Price/Sales
Price/Book
Enterprise Value/Revenue
Enterprise Value/EBITDA
3.23B
6.8B
6.95
16.04
1.64
1.73
1.04
3.65
10.80
Однако я хотел бы сохранить очищенные данные в файле csv с двумя столбцами name
и value
. Я могу получить столбец имени, но не могу понять, как добавить второй столбец value
в файл csv.
name value
Market Cap (intraday)
Enterprise Value
Trailing P/E
Forward P/E
PEG Ratio (5 yr expected)
Price/Sales
Price/Book
Enterprise Value/Revenue
Enterprise Value/EBITDA
Может ли кто-нибудь дать мне несколько предложений? Заранее спасибо.