CoderCastrov logo
CoderCastrov
Парсер

Парсинг списка индонезийских акций

Парсинг списка индонезийских акций
просмотров
4 мин чтение
#Парсер

Data Mining, Programming

Парсинг данных с биржи IDX Индонезии с использованием Selenium в Python

A. Введение

Инвестирование - это разумный способ накопления средств. В этом десятилетии в моей стране активно развивается инвестирование в акции. Я не хочу отставать и пытаюсь выяснить, где я могу инвестировать в акции. Наконец, я поискал в Google и нашел список акций на платформе IDX (Indonesia Stock Exchange). Итак, я искал список компаний, которые открыли свои фондовые рынки, и получил таблицу со списком акций. Вот как выглядит эта таблица:

Хорошо, из этой таблицы мы видим, что есть 713 компаний, которые открыли рынок акций. Я попытался спарсить эти данные, чтобы сохранить их. Вот мои шаги по парсингу таблицы со списком акций. Следуйте этому плану, если хотите попробовать:


B. Обсуждение

перейдем к парсингу данных с первого шага.

  1. Предварительные требования

Для успешного парсинга данных вам понадобятся две библиотеки: pandas и selenium. Вам нужно установить их все. Вот как установить их в Jupyter Notebook.

О, да. Не забудьте загрузить веб-драйвер. Здесь мы используем последнюю версию драйвера Chrome 8.8. Пожалуйста, загрузите его здесь.

Если у вас уже есть все эти библиотеки, вы можете сразу перейти к следующим шагам.

  1. Импорт библиотек

Вот код для импорта библиотек:

  1. Шаги парсинга

a. Открытие URL с помощью веб-драйвера из Python

Выполните следующий код, чтобы открыть URL с помощью веб-драйвера. Здесь я использую драйвер Chrome.

b. Отображение автоматически в 100 строках

  • Поиск ключевых слов в языке HTML, которые позволяют отобразить 100 строк.

После открытия URL, пожалуйста, посмотрите на ваш веб-драйвер, затем нажмите "ctrl" + "shift" + "i" на клавиатуре. Вы увидите, что веб-страница отображает некоторый HTML-код. Обратите внимание на раздел "Elements", затем наведите курсор на показанные опции. Вы увидите, что имя элемента - "stockTable_length". Мы выбираем 100 строк для отображения таблицы.

внимание на красный знак

чтобы отобразить 100 строк с помощью Python, следуйте этому коду:

c. Получение значений в таблице списка акций

  • Поиск ключа в языке HTML, который отображает каждое значение

a. поиск ключа тела таблицы

Мы должны найти ключ, который охватывает все значения в этой таблице. Хорошо, снова перейдите к веб-драйверу Chrome и наведите курсор на некоторые значения, и найдите ключ, который охватывает все значения. Он должен выглядеть примерно так:

ключ 'tbody', охватывающий все значения таблицы

отлично, мы смогли найти ключ HTML, который охватывает все значения таблицы. Этот ключ - "tbody". Поэтому мы можем написать код для поиска имен тегов и сохранения их в переменную с именем "table_data". Вот как выглядит код:

table_data = driver.find_element_by_tag_name("tbody")

b. поиск ключа каждого значения

Посмотрите на картинку ниже:

«tr» покрывает строки, а «td» - это путь значения

Из этой картинки мы видим, что "tr" покрывает значения строки, а каждое значение находится в ключе "td". Поэтому мы должны найти строки с помощью метода ".find_elements_by_tag_name('tr')". Вот код:

table_data.find_elements_by_tag_name("tr")

и "tr" покрывает "td" для каждого значения. Мы получаем значения, находя элементы по имени тега. Вот так:

find_elements_by_tag_name("td")

c. автоматическое нажатие на "следующий".

После того, как мы поняли ключ, покрывающий каждое значение в строках. Мы хотим получать значения автоматически. Мы должны сделать автоматическое нажатие на следующий. Посмотрите на картинку ниже:

кнопка «следующий» на ключе HTML «class».

С этой картинки мы видим, что кнопка "следующий" находится на ключе HTML с именем "class". Поэтому мы должны автоматизировать это с помощью кода, приведенного ниже.

next_button = driver.find_element_by_class_name("next")
next_button.click()

d. объединение всего кода в цикл, чтобы можно было спарсить 713

Хорошо, чтобы автоматически парсить с помощью цикла, мы используем цикл while. В этом разделе я объединил код для поиска значений в каждой строке. Вот как выглядит код:

  • Удаление обратной связи лаунчера на веб-сайте

О, да, ребята, не забудьте удалить обратную связь лаунчера. Пожалуйста, скопируйте этот код ниже, чтобы удалить функции обратной связи с этого веб-сайта. Если мы не удалим его, мы получим ошибки в нескольких случаях.

document.getElementById("launcher").style.display = "none"
document.querySelector(".feedback_overlay").style.display = "none"
document.querySelector(".feedback_panel").style.display = "none"

Вот как удалить лаунчер обратной связи.

внимание на желтый знак

внизу вы видите желтый круглый знак.

Когда вы вводите этот код, вот результат. Ура, поздравляю, вам удалось удалить обратную связь, как желтый круглый знак. На этом знаке мы не нашли обратную связь "Bantuan Offline", как показано ниже.

Лаунчер обратной связи был удален.
  1. Сохранение в CSV

Вот код для сохранения в CSV:

df.to_csv('stocks_list.csv', index = **False**)

C. Резюме

Отлично, нам удалось разобраться в том, как парсить данные с помощью Selenium. Мы можем узнать все компании, которые открыты на фондовом рынке Индонезии. Если вы хотите увидеть резюме кода, не забудьте удалить запускатель обратной связи, если возникают ошибки.

Надеюсь, это будет полезно для нас. И я благодарю моего друга Димаса Вихандоно, который захотел обсудить эту тему вместе.

Счастливого обучения!

D. Ссылки:

[1] Baiju Muthukadan, Selenium с Python

[2] Indonesia Stock Exchange, Список акций

[3] Dimas Wihandono, idx_selenium_scrap

[4] Ronny Fahrudin, парсинг данных


Еще одно мое написание:


Переведи введенный markdown код с английского на русский. Сохрани оригинальную разметку markdown и изображения на своих местах. Вместо слов скрэпинг/скрапинг/скрапер/скрэпер используй парсинг/парсер/парсить. Возвращай только markdown код, без дополнительного текста