CoderCastrov logo
CoderCastrov
Технология

Парсинг от нуля до героя (Часть 1/5)

Парсинг от нуля до героя (Часть 1/5)
просмотров
4 мин чтение
#Технология

Введение

Как говорится в Википедии, Парсинг веб-страниц, также известный как веб-скрапинг, веб-харвестинг или извлечение данных, является процессом извлечения данных с веб-сайтов.

Просто так. Заходите на веб-сайт, получаете наиболее важную информацию/данные для вас и можете использовать их по своему усмотрению. Все автоматизировано, конечно.

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

Давайте рассмотрим пример, использующий парсеры. Вы создаете стартап. Модель этого стартапа заключается в том, чтобы делиться своим диваном в обмен на несколько евро. Через несколько дней у стартапа все еще нет необходимых квартир для предложения клиентам. Один из основателей знает возможный способ: парсить Craigslist, чтобы получить интерес людей к предложению своих диванов, комнат или даже целых квартир! Это удивительно, не так ли? Этот стартап теперь называется AirBnB.

В этой статье я расскажу от начала до конца все, что нужно знать о парсинге и как сделать его более эффективным. Прежде чем начать, просто имейте в виду одну важную вещь: парсите только тогда, когда вы не можете получить данные другим способом (например, через общедоступное API). Это не простой способ:

  • Сохранять поддержку парсера,
  • Справляться со всеми проблемами, которые могут возникнуть при парсинге,
  • Минимизировать затраты на инфраструктуру.

Итак, если вы все еще хотите узнать об этом, давайте начнем!

Предположения

Прежде чем приступить к статье, вам следует знать несколько вещей о:

  • HTML,
  • XPath или CSS-селекторах,
  • Знаниях программирования (предпочтительно на Python. Также принимаются Java или Go).

Концепции

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

Парсинг

Когда нам нужно пройти по каждой странице веб-сайта, нам необходимо знать все их ссылки. Иначе, как мы сможем получить к ним доступ для парсинга? Способ получения всех ссылок называется парсингом.

Алгоритм очень прост:

Вы достигли всех пропарсенных ссылок на веб-странице.

Имейте в виду, что для парсинга методика выполнения похожа на парсинг. Вам нужно делать это "красивым" способом (или умным), чтобы избежать перегрузки сервера веб-сайта или других пользователей, которые используют веб-сайт. Я расскажу немного о том, как я рекомендую делать это при парсинге. Это можно применить точно так же.

Легальность

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

По моему мнению, вы можете парсить любую страницу, если:

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

Фреймворки

Существует множество фреймворков на разных языках программирования, которые могут помочь вам начать парсить. У каждого из них есть свои преимущества и недостатки.

Scrapy (Python)

Лично я считаю, что это один из лучших вариантов на рынке. Вообще.

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

Colly (GoLang)

Это довольно новый фреймворк, который позволяет использовать мощь языка GoLang (язык гиганта Google - кстати, вы знаете, что Google делает за кулисами? Да, парсинг!).

Colly быстрый, надежный и также масштабируемый. Главным недостатком использования этого фреймворка является то, что вам придется разрабатывать на Go. Сложность языка создает больше врагов, чем друзей. Если вы хороший разработчик на GoLang, то это ваш фреймворк! Вы можете посетить их веб-сайт или прочитать их документацию для получения дополнительной информации.

Есть и другие фреймворки на других языках, таких как Ruby on Rails, Java или даже PHP. Однако, в этой статье я буду предполагать, что мы будем использовать только Scrapy ради его простоты.


Необходимая среда разработки

Самая базовая среда разработки, которая необходима:

  • Установленный Python 3.9.
  • PyCharm для разработки кода на Python. Вы можете использовать community edition. Он бесплатный и предоставляет достаточно возможностей.
  • Docker для запуска необходимой базы данных для хранения информации.

Продолжение следует...

Эта статья является частью списка статей о Парсинге с нуля до героя:

Если у вас есть вопросы, вы можете оставить комментарий ниже или связаться со мной через Twitter или LinkedIn.