Як швидко зібрати дані з сайту за допомогою Scrapy
Привіт, мене звати Федір Лебідь, я співзасновник Webparsers.com та Senior Business Analyst в ElevEdge. Нижче я розповім, як можна розв’язувати прості задачі з парсингу сайтів навіть не технічним спеціалістам.
Вирішив написати про це, бо робота з даними — дуже важливий скіл, особливо для менеджерських ролей. І так чи інакше вміти самостійно щось зібрати буває дуже корисно й економить час.
Як це можна використовувати:
- дослідження ринку та конкурентів (ціни, послуги, асортимент);
- лідогенерація (списки компаній, посилання, імейли);
- отримання даних, недоступних через API.
Плюс із розвитком LLM (Large Language Models) це може допомогти з отриманням класних інсайтів, адже дані можна віддавати для контексту ChatGPT. Тому поїхали!
Web scraping або парсинг залишається потужним інструментом для збору даних із сайтів. Думаю, багато хто стикався з кейсом, коли треба отримати дані з сайту, але немає API. Сьогодні розглянемо використання Scrapy для збору даних із сайтів за допомогою Python.
Що таке Scrapy та як його встановити
Scrapy — це фреймворк Python, розроблений спеціально для збору даних. Він надає структурований та ефективний спосіб створення «павуків» (spiders), які ходять по сайту і витягують потрібні дані.
Створюємо свого першого павука.
Налаштовуємо оточення та встановлюємо Scrapy
- Встановіть віртуальне оточення, для цього можна використати conda.
- Встановіть Scrapy за допомогою команди pip install scrapy.
- Створіть проєкту Scrapy: scrapy startproject my_scraper.
- Пeрейдіть до папки cd spiders та своріть новий спайдер myspider.py.
Перед тим як, власне, писати код, спробуймо пересвідчитись, що Scrapy може знайти елементи на сайті
- Йдемо до термінала і вводимо команду scrapy shell — бачимо термінал Scrapy.
- Потім вводимо команду fetch(’your-link-here’) і дивимось, чи отримали 200 на нашому респонcі.
- Для перевірки знайдемо елемент на сторінці. Для цього пишемо таку команду: response.css(’h1.title::text’).get.
Щоб знайти потрібний вам селектор та клас, перейдіть у консоль розробника у вашому браузері.
Вставляємо наш код
import scrapy class MySpider(scrapy.Spider): name = 'my_spider' start_urls = ['<https://example.com>'] def follow_link(self, response): # Код для переходу на сторінку кліку на посилання for link in response.css('div.main_link a::attr(href)'): yield response.follow(link, callback=self.parse_item) for i in range (1, 25): # Цикл що відкриває наступну сторінку next_page = f'<https://example.com/page-{i}/>' yield response.follow(next_page, callback=self.follow_link) def parse_item(self, response): # Код для обробки сторінки та вилучення даних yield { 'text': response.css('span.text::text').get(), 'info': response.css('small.info::text').get(), }
Запускаємо павука scrapy crawl my_spider
Після запуску в ту саму папку створиться CSV-файл з вашими даними в директорії.
Переваги використання Scrapy
- Ефективність. Дозволяє швидко отримати результат за відносно короткий час.
- Простота. Scrapy використовує досить простий, інтуїтивно зрозумілий код з низьким порогом входу.
- Вбудована підтримка експорту даних. Scrapy може експортувати дані у різні формати, як-то CSV, JSON тощо.
Висновки
Scrapy — це потужний і зручний інструмент для збору даних з сайтів. Для його використання вам знадобляться базові знання HTML, CSS та Python.
Важливе зауваження. Під час роботи зі Scrapy дотримуйтесь правил використання сайтів та уникайте надмірного навантаження на сервери. Для цього можете робити штучну затримку, щоб ненароком не покласти чийсь сервер.
Більше цікавого про парсинг, технології та бізнес в нашому Telegram-каналі.
18 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів