Привет! Вы когда-нибудь вручную копировали и вставляли данные с веб-сайтов, желая найти более эффективный способ? Откройте для себя веб-скрапинг — революционную технику, которая экономит ваше время и открывает целый мир возможностей данных. Веб-скрапинг похож на детектива ваших личных данных, который собирает информацию с веб-сайтов с помощью нескольких строк кода. Это мощный инструмент, который может значительно улучшить вашу работу, позволяя извлекать ценную информацию, автоматизировать повторяющиеся задачи и принимать решения на основе данных. Представьте себе простой сбор сведений о продуктах, отслеживание рыночных тенденций или проведение анализа конкурентов. С помощью веб-скрапинга вы можете открыть сокровищницу информации, доступной в Интернете, и использовать ее в своих интересах. В этой статье мы погрузимся в захватывающий мир веб-скрапинга и познакомим вас с Beautiful Soup, библиотекой Python, которая упрощает извлечение данных из документов HTML и XML.

вы также можете просмотреть код этого проекта, перейдя по этой ссылке

Знакомство с красивым супом

В основе парсинга веб-страниц лежит Beautiful Soup, библиотека Python, которая превращает извлечение данных из документов HTML и XML в восхитительное занятие. Beautiful Soup выступает в роли вашего верного помощника, помогая ориентироваться в лабиринте кода веб-сайта и без труда извлекать нужную информацию. Благодаря интуитивно понятному и простому в использовании API Beautiful Soup абстрагируется от сложностей синтаксического анализа и обхода HTML-структур, позволяя вам сосредоточиться на важных данных. Независимо от того, ищете ли вы определенные элементы, извлекаете текст или даже углубляетесь во вложенные теги, Beautiful Soup предоставляет полный набор инструментов, упрощающих этот процесс. Он изящно обрабатывает беспорядочный и непоследовательный HTML, адаптируясь к различным структурам страниц и делая ваши задачи очистки более плавными. В этой статье мы погрузимся в мир Beautiful Soup и изучим его мощные функции, которые позволят вам быстро стать опытным парсером.

Наш вариант использования

Представьте себе: ваш начальник ожидает от вас ежедневных отчетов о последних ценах основных индексов, таких как S&P 500, DOW30, NASDAQ и strong>Рассел 2000. Мало того, что вам нужно собирать данные из нескольких источников, ваш начальник также хочет, чтобы отчеты удобно доставлялись в файле Excel. Не беспокойтесь, потому что с помощью веб-скрапинга и некоторого дополнительного кода вы можете легко выполнить это требование. Используя Beautiful Soup и генерацию файлов Excel, вы можете автоматизировать извлечение данных индекса и сохранять их в формате структурированной электронной таблицы. С помощью нескольких простых изменений вы сможете получить последние цены индексов S&P 500, DOW30, NASDAQ и Russell 2000 и экспортировать их в виде файла Excel. В этой статье мы проведем вас через процесс извлечения данных индекса и предоставим вам код для создания файла Excel, чтобы вы могли произвести впечатление на своего начальника точными отчетами в формате, который им понравится. только один клик!

Пусть работа начнется!

Прежде чем мы погрузимся в захватывающий мир веб-скрапинга с помощью Beautiful Soup, давайте начнем с настройки нашего проекта в PyCharm. PyCharm — это мощная интегрированная среда разработки (IDE), которая обеспечивает беспрепятственный процесс кодирования для разработчиков Python. Создав специальный проект для наших усилий по очистке веб-страниц, мы можем упорядочить наш код, использовать функции IDE и сделать наш процесс разработки более эффективным.

В этом разделе мы познакомим вас с этапами создания нового проекта в PyCharm, настроим необходимую среду и убедимся, что у нас есть все необходимое для начала нашего путешествия по веб-скрейпингу. К концу этого раздела у вас будет полностью настроенный проект в PyCharm, готовый с легкостью написать код парсинга веб-страниц.

Итак, давайте засучим рукава и приступим к созданию нашего проекта в PyCharm!

Создайте проект PyCharm

чтобы создать свой проект в pycharm, выполните следующие действия:

1. Запустите PyCharm: откройте PyCharm IDE на своем компьютере.

2. Создайте новый проект. Нажмите «Создать новый проект» или выберите «Файл» › «Новый проект», чтобы создать новый проект. проект.

3. Укажите сведения о проекте. Выберите место на своем компьютере, где вы хотите хранить файлы проекта. Дайте вашему проекту значимое имя, например «WebScraper» или любое другое имя, которое вы предпочитаете.

4. Выберите интерпретатор: выберите интерпретатор Python, который вы хотите использовать для своего проекта. Если у вас установлена ​​определенная версия Python, выберите ее из списка. В противном случае вы можете создать новую виртуальную среду для своего проекта.

5. Создать проект. Нажмите кнопку «Создать», чтобы создать проект. PyCharm настроит структуру проекта и откроет главное окно проекта.

Изучение веб-страницы

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

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

Чтобы начать наше приключение по веб-скрейпингу, давайте подробнее рассмотрим главную страницу Yahoo Finance. Зайдите на Yahoo Finance и изучите множество доступной финансовой информации. Это будет наша площадка для извлечения ценных данных. Найдите минутку, чтобы ознакомиться с элементами, которые мы будем использовать для парсинга. Чтобы помочь вам, обратитесь к изображению ниже, на котором выделены конкретные элементы, которые мы стремимся извлечь:

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

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

  1. Откройте Chrome: запустите браузер Chrome на своем компьютере.
  2. Перейдите на Yahoo Finance: посетите главную страницу Yahoo Finance или любую другую веб-страницу, которую вы хотите проверить.
  3. Откройте Инструменты разработчика: щелкните правой кнопкой мыши в любом месте веб-страницы и выберите "Проверить" или "Проверить элемент". Это откроет представление разработчика в Chrome.
  4. Исследуйте элементы: в представлении разработчика вы увидите HTML-код веб-страницы. Потратьте некоторое время, чтобы просмотреть различные элементы и понять структуру страницы.

Когда вы исследуете HTML-код в представлении разработчика, вы можете сначала увидеть множество тегов, атрибутов и текста. Не перегружайтесь! Чтобы найти конкретный элемент, который вы хотите очистить, Chrome предлагает полезный инструмент. Найдите маленькую кнопку, напоминающую курсор или значок стрелки, в верхнем левом углу окна разработчика. Нажмите эту кнопку, чтобы активировать режим «Выбрать элемент».

Находясь в режиме «Выбрать элемент», наведите курсор на различные элементы на веб-странице, и вы заметите, что они выделены в представлении разработчика. Наводя курсор на элементы, вы можете визуально идентифицировать связанный с ними HTML-код.

Например, давайте рассмотрим ценовой элемент S&P в качестве примера:

<fin-streamer class="Fz(s) Mt(4px) Mb(0px) Fw(b) D(ib)" data-symbol="^GSPC" data-field="regularMarketPrice" data-trend="none" value="4348.33" active="true">4,348.33</fin-streamer>

Утилизация элементов с помощью красивого супа

Чтобы начать сбор данных со страницы Yahoo Finance, мы воспользуемся возможностями Beautiful Soup (bs4), нашего надежного помощника в навигации и извлечении информации из HTML-кода. С Beautiful Soup мы можем без особых усилий просматривать структуру HTML и извлекать нужные элементы.

Для начала нам нужно установить библиотеку Beautiful Soup в наш проект Python. Откройте свой проект в PyCharm и перейдите к терминалу или командной строке. Используйте следующую команду для установки Beautiful Soup:

pip install requests
pip install beautifulsoup4

После установки мы импортируем необходимые модули в наш скрипт Python. Добавьте следующие строки кода в начало файла Python:

import requests
from bs4 import BeautifulSoup

Мы импортируем модуль requests для получения HTML-кода страницы Yahoo Finance, а модуль BeautifulSoup из модуля bs4 — для анализа и навигации по структуре HTML.

Далее мы напишем код для получения HTML-кода страницы Yahoo Finance с помощью библиотеки requests. Оставайтесь с нами, пока мы отправляемся в путешествие по веб-скрейпингу и открываем для себя увлекательный мир извлечения данных!

С Beautiful Soup и импортированными необходимыми модулями мы готовы получить HTML-код страницы Yahoo Finance. Для этого мы будем использовать библиотеку requests, которая позволяет нам отправлять HTTP-запросы и получать HTML-контент веб-страницы.

Добавьте следующий фрагмент кода в свой скрипт Python:

url = 'https://finance.yahoo.com/'
response = requests.get(url)
html_content = response.content

В приведенном выше коде мы определяем переменную url для хранения URL-адреса страницы Yahoo Finance, которую мы хотим очистить. Затем мы используем requests.get(url) для отправки запроса GET на URL-адрес и получения ответа. Ответ содержит HTML-контент страницы.

Мы сохраняем HTML-контент в переменной html_content, которую позже передадим в Beautiful Soup для разбора и извлечения.

Теперь, когда у нас есть HTML-код, мы готовы раскрыть всю мощь Beautiful Soup, чтобы перемещаться по нему и извлекать нужные данные. Следите за обновлениями в следующем разделе, где мы рассмотрим, как использовать Beautiful Soup для поиска элемента, представляющего цену S&P, и извлечения необходимых данных.

Сохраняйте энтузиазм, пока мы углубляемся в парсинг веб-страниц с помощью Python и Beautiful Soup!

# Create a Beautiful Soup object
soup = BeautifulSoup(html_content, 'html.parser')
# Find the element representing the S&P price
sp_price_element = soup.find('fin-streamer', {'data-symbol': '^GSPC', 'data-field': 'regularMarketPrice'})
# Extract the price value
sp_price = sp_price_element['value']
# Print the current S&P 500 price
print('The current S&P 500 price is:', sp_price)

Чтобы найти элемент, представляющий цену S&P, мы используем метод soup.find(). Мы передаем имя тега 'fin-streamer' и словарь, содержащий атрибуты 'data-symbol': '^GSPC' и 'data-field': 'regularMarketPrice'. Это помогает нам сузить поиск до определенного элемента, который нам нужен.

Получив sp_price_element, мы извлекаем значение цены, обращаясь к атрибуту 'value' с помощью квадратных скобок. Мы храним цену в переменной sp_price.

Наконец, мы печатаем текущую цену S&P 500, используя print('The current S&P 500 price is:', sp_price).

Запустив скрипт, вы увидите текущую цену S&P 500, напечатанную на консоли.

Теперь давайте возьмем остальные три элемента, которые нам нужны:

dow30_price_element = soup.find('fin-streamer', {'data-symbol': '^DJI', 'data-field': 'regularMarketPrice'})
dow30_price = dow30_price_element['value']

nasdaq_price_element = soup.find('fin-streamer', {'data-symbol': '^IXIC', 'data-field': 'regularMarketPrice'})
nasdaq_price = nasdaq_price_element['value']

russel_price_element = soup.find('fin-streamer', {'data-symbol': '^RUT', 'data-field': 'regularMarketPrice'})
russel_price = russel_price_element['value']

И в конце выведем все результаты, чтобы посмотреть, что у нас получилось:

print('The current S&P 500 price is:', sp_price)
print('The current DOW30 price is:', dow30_price)
print('The current nasdaq price is:', nasdaq_price)
print('The current RUSSEL2000 price is:', russel_price)

Как мы видим, bs4 выдает нам цены именно такие, какие они есть:

The current S&P 500 price is: 4348.33
The current DOW30 price is: 33727.43
The current nasdaq price is: 13492.516
The current RUSSEL2000 price is: 1821.6345

Сохраняем наши данные в файл excel

Теперь, когда мы собрали наши данные, мы можем сохранить их в файл Excel. Я сделаю еще один полный учебник для этой работы, а пока давайте просто напишем простой код для завершения нашей работы.

сначала нам нужно установить библиотеку pandas:

pip install pandas

а затем мы импортируем его в начало нашего кода:

import pandas as pd

Чтобы сохранить очищенные данные в структурированном формате, мы будем использовать DataFrame pandas. Добавьте следующий фрагмент кода после очистки цен на акции:

# Creating a DataFrame
data = {
    'Symbol': ['S&P 500', 'Dow Jones', 'Nasdaq Composite','RUSSEL 2000'],
    'Price': [sp_price, dow30_price, nasdaq_price,russel_price]
}
df = pd.DataFrame(data)

Теперь, когда у нас есть готовый DataFrame, мы можем сохранить его в файл Excel, используя функцию to_excel(), предоставляемую pandas. Добавьте следующий фрагмент кода после создания DataFrame:

# Saving data to Excel
file_name = 'stock_prices.xlsx'
df.to_excel(file_name, index=False)
print('Data saved to', file_name)

Погружаемся глубже в HTML-элементы

В предыдущем фрагменте кода мы использовали следующие атрибуты в методе soup.find():

sp_price_element = soup.find('fin-streamer', {'data-symbol': '^GSPC', 'data-field': 'regularMarketPrice'})

Эти атрибуты помогают нам идентифицировать конкретный интересующий нас элемент в структуре HTML. Разберем их:

  1. 'data-symbol': '^GSPC': этот атрибут определяет значение атрибута data-symbol элемента. В данном случае мы ищем элемент с атрибутом data-symbol, установленным на ^GSPC. ^GSPC представляет символ S&P 500.
  2. 'data-field': 'regularMarketPrice': Этот атрибут определяет значение атрибута data-field элемента. Нас интересует элемент с атрибутом data-field, установленным на 'regularMarketPrice'. Этот конкретный атрибут указывает на то, что мы хотим получить обычную рыночную цену S&P 500.

Комбинируя эти атрибуты, мы создаем фильтр, который помогает сузить поиск до нужного нам элемента. Если элемент с именем тега 'fin-streamer' содержит эти атрибуты с указанными значениями, он будет выбран как sp_price_element.

Важно отметить, что эти атрибуты относятся к структуре HTML страницы Yahoo Finance. Если структура страницы изменяется или элемент, представляющий цену S&P, имеет другие атрибуты, вам может потребоваться изменить атрибуты соответствующим образом.

В таких случаях вы можете проверить исходный HTML-код страницы или использовать инструменты разработчика браузера, чтобы определить соответствующие атрибуты и их значения. Обновите атрибуты в методе soup.find() соответствующим образом, чтобы обеспечить точный выбор элемента.

Заключение

Поздравляем с завершением этого урока! Вы узнали, как получить информацию о ценах на акции из Yahoo Finance с помощью Python и Beautiful Soup. Используя возможности парсинга веб-страниц, вы можете собирать ценные данные для анализа и принятия решений. Мы рассмотрели основы синтаксического анализа HTML, поиска определенных элементов и извлечения данных с помощью Beautiful Soup. Кроме того, мы изучили, как сохранить очищенные данные в файл Excel с помощью pandas. Вооружившись этими методами, теперь вы можете очищать цены акций для различных символов и сохранять их для дальнейшего анализа или обмена. Продолжайте изучать и применять свои новообретенные навыки, чтобы открыть еще больше возможностей в веб-скрапинге. Удачного скрейпинга!

если у вас возникли проблемы или вопросы, не стесняйтесь спрашивать меня!

вы также можете просмотреть репозиторий кода, перейдя по этой ссылке