Парсинг с помощью Python. Урок 3
Учимся скрейпить сайты с помощью библиотеки Scrapy
Продолжаем изучать парсинг с Python. В прошлый раз мы использовали библиотеки Requests, Beautifulsoup и Selenium. Сегодня поговорим о библиотеке Scrapy. Она позволяет быстро собирать информацию с сайтов, работать с динамическими сайтами, когда информация подгружается автоматически, работать с api. На примере книжного магазина мы попробуем разобраться, как работает эта библиотека.
Работать со Scrapy удобнее в редакторе Visual Studio Code. Если вы еще не знаете, как работать в VStudio и устанавливать виртуальное окружение, посмотрите уроки, где мы показывал, как написать робота для анализа госконтрактов. В них мы подробно рассказывали, как установить редактор, разбирали базовые команды в терминале, учились устанавливать и запускать виртуальное окружение.
Этот урок мы начнем с момента, когда VStudio и виртуальное окружение установлено.
Создаем проект
В редакторе мы открываем терминал. Через терминал создадим папку, где будет лежать наш проект, назовем его our_spider. Команда: mk dir our_spider.
Перейдем в эту папку: cd our_spider.
И запустим виртуальное окружение: pipenv shell
Теперь установим библиотеку: pip install scrapy
Чтобы было легче смотреть на команды, которые мы вводим, можно иногда очищать терминал. Для этого на Mac есть горячие клавиши: control+L.
Создадим наш первый проект, назовем его bestsellers. Для этого вводим команду: scrapy startproject bestsellers.
Перейдем в папку: cd bestsellers.
Откроем эту папку и в редакторе: open folder → our_spider.
Мы видим, что в папке с проектом появилось несколько папок и файлов. Это файлы конфигурации, настройки нашего скрейпера. Подробнее о том, что содержится в каждом файле, написано в официальной документации Scrapy. Но сейчас нас эти файлы не интересуют. Мы заходим в папку spiders. В ней будут лежать пауки — это файлы, в которых мы прописываем, что именно нужно собирать на сайте. Создадим первого паука. Для этого нужно нажать на значок папки рядом с названием основной папки — bestsellers. Назовем нашего паука book_spider.py. Не забываем указывать расширение .py для питона.
Изучаем сайт
Посмотрим на сайт, с которым мы будем работать. Это онлайн-магазин Book24. Мы будем собирать информацию о книгах из раздела «бестселлеры». Для этого нужно зайти на страницу каждой книги, собрать нужную информацию, выйти и зайти на страницу уже следующей книги. И так пройти по всем книгам раздела.
Прежде чем начинать писать код, посмотрим, какие команды будут доставать нужные нам элементы. Для этого перейдем в scrapy shell. Scrapy shell — это оболочка, что-то вроде отдельной комнаты, в которой можно пробовать обращаться к сайту с помощью отдельных команд и смотреть, какие ответы возвращаются. При этом не нужно писать целый код.
Чтобы перейти в scrapy shell, набираем в терминале команду scrapy shell и нажимаем enter.
Теперь обратимся к сайту, с которым будем работать. Для этого воспользуемся командой fetch. В скобках и кавычках передадим ссылку на страницу книги. В ответе мы увидели число 200. Это значит, сайт работает и готов отдавать нам информацию.