Найти тему
WebDev

Web scraping на Python

Всем доброго времени суток!)

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

Web scraping/parsing/scraping/парсинг/парсеры

Фотография для обложки.
Фотография для обложки.

Все это одно и то же. Это сбор данных с html страниц сайта, можно это делать и вручную, но как правило пишут код.

Работает очень просто:

1) Отправляем get запрос на наш сайт. В ответ получаем html-страницу.

2) Парсим эту html страничку как обычную строчку в Python.

3) Куда-нибудь записываем наши данные

Для этого я использую три библиотеки.

Это requests - одна из самых популярных сторонних библиотек на python. С помощью нее мы будем отправлять запросы на сайт и возвращать html-страницы.

BeautifulSoup4. Также популярная библиотека, с ее помощью будем уже собирать данные из нашего html'a. Для ее работы нужно установить библиотеку lxml.

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

Вот так выглядит до недавнего времени рабочий парсер авито:

Первая часть кода
Первая часть кода
Вторая часть кода
Вторая часть кода

Возможно, вы спросите почему так много блоков try except. Если мы парсим большое количество страниц, соответственно большое количество объявлений (в случае с авито). У нас попросту может какой-то из критериев отсутствовать в объявлении и вылетать исключение.

Например цена, часто можно встретить, что продавец не указывает цену, а мы ее собираем. Если это не обработать, то у нас постоянно будут вылетать исключения.

Спасибо за внимание!) Всем peace.