Узнайте, когда цена криптовалюты ниже, не открывая сайт каждый раз
В этом проекте мы собираемся очистить сайт crypto.com, чтобы получить 500 самых эффективных криптовалют и сохранить все данные в базе данных MySQL с отметкой времени в качестве имени таблицы.
Введение
Веб-скрапинг — это важный навык, которым необходимо обладать в наши дни. Мы можем парсить веб-сайты на предмет имен таблиц, содержащих ценные данные, и автоматизировать задачи. Вместо того, чтобы повторно открывать веб-сайт, чтобы проверить, снижена ли цена, мы можем просто очистить веб-сайт и установить электронное письмо, если цена будет снижена.
Мы будем очищать crypto.com/price, чтобы получить 500 самых эффективных криптовалют. Ниже скриншот с сайта.
Предпосылка
Прежде чем начать этот проект, нам нужно установить виртуальную среду Python. Посетите Краткое введение в виртуальные среды Python, чтобы узнать, как настроить виртуальную среду в python.
После создания виртуальной среды установите модули Python с помощью приведенной ниже команды.
$ pip install requests bs4 pandas mysql-connector-python
Теперь, когда мы установили модули, мы можем запустить проект.
Веб-скрейпинг
Запросы модулей Python и красивый суп будут использоваться для парсинга веб-страниц. Модуль запроса используется для получения HTML-кода веб-страницы, а красивый суп облегчит выделение определенного элемента из кода.
В браузере откройте веб-сайт и проверьте, чтобы проверить все элементы, которые нам нужно извлечь со страницы. Что касается этого проекта, мы должны извлечь первую таблицу. В приведенном ниже коде вы можете увидеть, как мы извлекли первую таблицу с веб-страницы, используя запросы и красивый суп.
# import <packages> import requests from bs4 import BeautifulSoup4 # getting HTML code from webpage and formatting URL = 'https://crypto.com/price' response = request.get(URL) soup = BeautifulSoup4(response.text) # scraping table element from HTML code table = soup.find('table')
Код
HTML-коды всегда заполнены несколькими вложенными элементами, иногда нам нужно вручную выполнить какую-то задачу, чтобы получить текстовые данные. В строке 28 – 29 нам нужно отфильтровать больше, чтобы получить текстовое значение.
После выполнения приведенного выше кода мы получим два списка. Первый будет хранить заголовок из таблицы, а второй — строки таблицы в формате кортежа. Эти данные могут быть отформатированы во фрейм данных и сохранены в виде файла CSV.
Преобразование необработанных данных в фрейм данных и сохранение в виде файла CSV
from pandas import DataFrame crypto_df = DataFrame(crypto_data, columns=heading) crypto_df.to_csv(<path>, index=False)
Соединение с MySQL
Используйте приведенный ниже код для подключения базы данных MySQL к Python.
Создать команду
CREATE TABLE `crypto_scraper`.`{table_name}` ( `Rank` INT NOT NULL, `Name` VARCHAR(50) NOT NULL, `Price` VARCHAR(20) NOT NULL, `24H_Change` VARCHAR(20) NOT NULL, `24H_Volume` VARCHAR(20) NOT NULL, `Market_Cap` VARCHAR(20) NOT NULL, PRIMARY KEY (`Name`) );
Мы берем имя таблицы в качестве переменной, потому что будет создана новая таблица для хранения новых данных, полученных с веб-сайта.
Формат имени файла: crypto_%Y%m%d%H%M%S
Вставить команду
INSERT_COMMAND = \ 'INSERT INTO {table} VALUES(%s, %s, %s, %s, %s, %s);'.format( table=table_name)
Выполнение команд SQL в Python
try: cursor.execute(CREATE_COMMAND) database.commit() cursor.executemany(INSERT_COMMAND, crypto_data) database.commit() except Error as e: print(e)
Приведенный выше код передаст все криптографические данные в базу данных.
Репозиторий GitHub: https://github.com/arabind-meher/Crypto-Scraping.git