Как парсить тикеры S&P 500 за 5 простых шагов (на Python)
Table Of Content
- **Шаг 2: Импорт необходимых библиотек**
- **Шаг 3: Парсинг данных**
- Получение содержимого страницы с помощью запроса
- **Шаг 4: Поиск таблицы и извлечение тикеров (Увлекательная часть)**
- Получение таблицы со списком акций
- Список для сохранения всех тикеров
- print(ticker) # ОТЛАДОЧНОЕ_УТВЕРЖДЕНИЕ
- **Шаг 5: Запись данных в CSV**
- Преобразование списка в объект данных pandas
Шаг 1: Нахождение тикеров онлайн (URL)
URL = "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies"
Шаг 2: Импорт необходимых библиотек
Для этой задачи нам понадобятся [BeautifulSoup4](http://pip install bs4), Pandas** **и Requests
import bs4 as bs
import requests
import pandas as pd
Шаг 3: Парсинг данных
Мы собираемся использовать нашу библиотеку requests для получения содержимого HTML и преобразования его в объект beautifulsoup.
# Получение содержимого страницы с помощью запроса
resp = requests.get(URL)
soup = bs.BeautifulSoup(resp.content)
Шаг 4: Поиск таблицы и извлечение тикеров (Увлекательная часть)
Нас не интересует содержимое страницы, мы хотим только получить символы тикеров с этой страницы. Символы тикеров содержатся в таблице HTML
<table>
с именем класса: "wikitable sortable".
Мы собираемся использовать beautifulsoup для извлечения таблицы из этой страницы.
# Получение таблицы со списком акций
table = soup.find('table', {'class': 'wikitable sortable'})
Нас не интересует вся таблица, нам нужны только символы тикеров.
Символ тикера скрыт внутри ячейки таблицы
<td>
, которая находится внутри строки таблицы<tr>
# Список для сохранения всех тикеров
tickers = []
# Парсинг HTML-страницы для поиска тикера
for row in table.findAll('tr')[1:]: # Игнорируем заголовочную строку
ticker = row.findAll('td')[0].text
# print(ticker) # ОТЛАДОЧНОЕ_УТВЕРЖДЕНИЕ
tickers.append(ticker)
Шаг 5: Запись данных в CSV
Если вы задаетесь вопросом, зачем мы импортируем pandas в шаге 1? Вот ответ: pandas поможет нам преобразовать наш список в файл CSV.
# Преобразование списка в объект данных pandas
df = pd.DataFrame(tickers)
df = df.replace('\n','', regex=True)
df.columns = ["Тикер"]
# Запись объекта данных в CSV
df.to_csv('s_&_p_500_tickers.csv')