#python #pandas #web-scraping
#python #pandas #веб-очистка
Вопрос:
Мне было интересно, как извлекать тикеры из файла Excel, загружать кучу веб-сайтов и запускать pd.read_html на каждом веб-сайте, чтобы получить большой список dfs, содержащий таблицы каждой страницы?
Это мой список тикеров: https://docs.google.com/spreadsheets/d/16kdjtOlV1M_rDnM73lPi6ZcMvowQPmtjKu6bYTXK588/edit?usp=sharing
Это мой текущий код:
from six.moves import urllib
import pandas as pd
df = pd.read_excel('C:/Users/Jacob/Downloads/CEF Tickers.xlsx', sheet_name='Sheet1')
tickers_list = df['Ticker'].tolist()
df_list = []
for ticker in tickers_list:
df_list[ticker] = pd.read_html(f'https://www.cefconnect.com/fund/{ticker}', header=0)
print(df_list)
И затем, когда я это делаю, я получаю:
TypeError: list indices must be integers or slices, not str
Спасибо за ваше время.
Комментарии:
1.
ticker
это не целое число, это строка. если вы хотите индексировать коллекцию значений с помощью строк, используйте словарь
Ответ №1:
from six.moves import urllib
import pandas as pd
df = pd.read_excel('C:/Users/Jacob/Downloads/CEF Tickers.xlsx', sheet_name='Sheet1')
tickers_list = df['Ticker'].tolist()
df_list = []
for ticker in range(len(tickers_list)):
df_list[ticker] = pd.read_html(f'https://www.cefconnect.com/fund/{ticker}', header=0)
print(df_list)
Ответ №2:
Это то, что я сделал.
df = pd.read_excel('C:/Users/Jacob/Downloads/CEF Tickers.xlsx', sheet_name='Sheet1')
tickers_list = df['Ticker'].tolist()
data = pd.DataFrame(columns=tickers_list)
for ticker in tickers_list:
data[ticker] = pd.read_html(f'https://www.cefconnect.com/fund/{ticker}', header=0)
print(data)