Веб-Скраппинг
Что необходимо знать?
- HTML: Необходимо знать HTML-структуру веб-страницы, чтобы понимать, как получить нужные данные.
- CSS: Каскадные таблицы стилей помогают в разметке и оформлении веб-страниц. Знание CSS поможет в работе со структурой HTML и определении селекторов.
- Python: Веб-скрапинг в основном выполняется с использованием языка программирования Python. Необходимо знать основные конструкции языка, типы данных, функции и библиотеки, такие как Requests, Beautiful Soup, Selenium.
- XPath: Это язык запросов, который используется для извлечения данных из HTML-страниц. Он позволяет определить путь к элементу на странице.
- Регулярные выражения: Используются для поиска и извлечения данных из текстовых строк.
- HTTP и HTTPS: Необходимо знать, как работает протокол передачи гипертекста и как веб-серверы обрабатывают запросы.
- CLI: Умение работать с командной строкой поможет в установке и настройке необходимых инструментов.
- Database: Некоторые проекты по веб-скрапингу могут включать работу с базами данных.
- Этика веб-скрапинга: Необходимо соблюдать правила этики веб-скрапинга, чтобы не нарушать законы и соблюдение авторских прав на полученные данные.
Веб-сайты для скраппинга
- Books To Scrape - это сайт с каталогом книг, содержащий информацию о книгах, такую как автор, цена, описание и т.д.
- Quotes to Scrape - это сайт для изучения основных концепций веб-скрапинга, таких как выборка элементов с помощью CSS-селекторов, работа с пагинацией и т.д.
- Crummy - это сайт документации Beautiful Soup, который можно использовать для практики веб-скрапинга с помощью Beautiful Soup.
- Data Camp - это сайт для онлайн-обучения, который также содержит много интересной информации, которую можно извлечь с помощью веб-скрапинга.
- IMDB - это сайт, содержащий информацию о фильмах, актерах, режиссерах и т.д.
- Reddit - это сайт социальных новостей, который можно использовать для практики извлечения информации из нескольких страниц.
Визуальное знакомство с веб сайтом
На примере сайта для поиска работы hh.ru
Перед началом веб-скрапинга важно обратить внимание на следующие аспекты:
- Структуру сайта
Необходимо понять, как устроен сайт, какие страницы в него входят, как связаны между собой различные элементы. - Разрешения на скрапинг
Некоторые сайты запрещают скрапинг или ограничивают его. Перед началом работы необходимо убедиться в том, что скрапинг разрешен и что нет ограничений на количество запросов. - Формат данных
Необходимо определить, какие данные нужно извлекать с сайта и в каком формате они представлены. - Методы идентификации элементов
Необходимо понять, как идентифицировать элементы на странице, которые нужны для извлечения данных. Это могут быть классы CSS, теги HTML, XPath-выражения и т.д. - Способы парсинга
Необходимо выбрать способ парсинга данных, наиболее подходящий для данного сайта. Например, можно использовать библиотеки BeautifulSoup или lxml для парсинга HTML-кода страницы.
Подробнее: Разрешения на скрапинг
- Проверьте robots.txt файла сайта. robots.txt является стандартом для указания правил для веб-краулеров. Он сообщает, какие страницы сайта можно сканировать, а какие - нет. Обычно файл robots.txt находится в корневом каталоге сайта. Например, для сайта http://books.toscrape.com/ его путь будет выглядеть как http://books.toscrape.com/robots.txt.
- Проверьте заголовки ответа сервера. Они могут указать на то, есть ли ограничения на сканирование.
- Используйте инструменты веб-аналитики, такие как Google Analytics, чтобы проверить, есть ли на сайте ограничения на сканирование.
- Проверьте, есть ли у веб-сайта правила для скрытия информации от веб-краулеров, например, применение JavaScript, CAPTCHA или IP блокировки.
- Обратитесь к администраторам сайта, чтобы узнать о возможности сканирования данных с их сайта и получить разрешение на выполнение веб-скрапинга.
Анализ веб-сайта
Необходимо понять какие данные мы можем извлечь из этого сайта. На пример: * Название книги * Цена * Описание * Код товара * Книга в наличии или нет * Ссылка на обложку книги
ID | Book_Title | Price | Description | UPC | Availability | Link |
---|---|---|---|---|---|---|
1 | When We Collided | £31.77 | We are seventeen and shattered and still dancing. We have messy, throbbing hearts, and we are stronger than anyone could ever know |
3ecb690d1542c568 | In stock (16 available) | Link |
Начало веб-скраппинга
Сформируем структуру проекта
WEBSCRAPPING/
│
├── BooksToScrape/ # папка с приложением.
│ │
│ ├── main.py # файл, содержащий основную логику приложения.
│ │
│ ├── database.py # файл, отвечающий за подключение к базе данных.
│ │
│ ├── requirements.txt # файл, содержащий список зависимостей для проекта.
│ │
│ └── .env_db # файл, описываются параметры для подключения к БД
│
└── README.md # файл с описанием проекта и инструкциями по его использованию.
Библиотеки для скраппинга
В файл requirements.txt
сохраните следующие библиотеки:
requests
beautifulsoup4
-
Библиотека
requests
в Python предоставляет простой и удобный интерфейс для отправки HTTP-запросов и работы с ответами на них. С помощью этой библиотеки можно получить HTML-страницы, изображения, файлы и другие ресурсы из Интернета. Библиотека requests может использоваться во многих задачах, включая веб-скрапинг. -
Библиотека
Beautiful Soup
является инструментом для разбора HTML- и XML-документов. Она позволяет обращаться к отдельным элементам HTML-страницы, находить элементы по их атрибутам, классам и тегам, а также извлекать данные из них. Библиотека Beautiful Soup широко используется для веб-скрапинга в Python благодаря своей простоте и мощности. Она может работать с HTML-кодом, который не соответствует стандартам, и автоматически исправлять ошибки разметки.
Виртуальное окружение и установка библиотек
Создайте виртуальное окружение с именем venv и активируйте его:
python3 -m venv venv
source venv/bin/activate
Установите зависимости из файла requirements.txt, затем просмотрите установленные библиотеки:
pip install -r requirements.txt
pip list