Как парсить данные с веб-сайта с помощью Scrapy
Scrapy - это совместный фреймворк для веб-скрапинга и веб-краулинга с открытым исходным кодом, написанный на Python. Он разработан для масштабирования и модульности, позволяя разработчикам легко создавать веб-парсеры и парсить данные с различных веб-сайтов. В этом блоге мы рассмотрим архитектуру Scrapy и предоставим пример использования для парсинга данных с веб-сайта.
Архитектура Scrapy
- Scrapy следует распределенной архитектуре, состоящей из различных компонентов. Эти компоненты работают вместе, чтобы обеспечить эффективность и надежность веб-краулинга и парсинга. Вот основные компоненты Scrapy:
Использование Scrapy для парсинга данных
Для иллюстрации работы Scrapy рассмотрим пример парсинга данных с веб-сайта. Мы будем использовать Scrapy для извлечения заголовков и URL-адресов последних блог-постов с блога jeelr.me.
1. Установка Scrapy:
pip install scrapy
2. Создание проекта Scrapy:
- Первый шаг - создать проект Scrapy с помощью следующей команды:
scrapy startproject jeel_blog
- Это создаст новый проект Scrapy в каталоге с именем jeel_blog.
3. Определение парсера
- Затем нам нужно определить парсер, который будет обходить блог OpenAI и извлекать нужные данные. Мы можем сделать это, создав новый парсер с помощью следующей команды:
scrapy genspider jeel jeelr.me
- После определения парсера мы можем написать код, который будет извлекать нужные данные. Мы можем сделать это, изменив файл
jeel
, который был создан на шаге 3.
Вот код, который мы будем использовать:
import scrapy
class JeelSpider(scrapy.Spider):
name = 'jeel'
start_urls = ['https://jeelr.me/blog']
def parse(self, response):
for post in response.css('#__layout > div > div.flex-grow > div > div'):
yield {
'title': post.css('div > a > h5::text').get(),
'url': post.css('div > a::attr(href)').get(),
}
Этот код определяет парсер с именем JeelSpider
, который начнет обход блога Jeel с URL-адреса https://jeelr.me/blog/
. Затем он будет извлекать заголовок и URL-адрес каждого блог-поста с помощью селекторов CSS.
4. Запуск паука
Наконец, мы можем запустить паука с помощью следующей команды:
scrapy crawl jeel -o posts.json
Это запустит паука и сохранит извлеченные данные в файл с именем posts.json
.
Заключение
Scrapy - мощный и гибкий фреймворк для парсинга и скрапинга веб-сайтов. Его распределенная архитектура позволяет эффективно и надежно извлекать данные из различных источников, а с помощью конвейеров данных можно преобразовывать данные в различные форматы, такие как CSV, JSON и другие...