Scrapy — это платформа приложений, написанная на Python для сканирования данных веб-сайта и извлечения структурных данных.
1. Введение в Scrapy Framework
Scrapy — это платформа приложений, написанная для сканирования данных веб-сайта и извлечения структурных данных. Его можно использовать в ряде программ, включая интеллектуальный анализ данных, обработку информации или хранение исторических данных.
Первоначально он был разработан для парсинга веб-страниц (точнее, парсинга веб-страниц), но также может использоваться для извлечения данных, возвращаемых API-интерфейсами (такими как веб-службы Amazon Associates) или поисковыми роботами общего назначения.
Во-вторых, блок-схема структуры
На следующих диаграммах показана архитектура Scrapy, включая компоненты и обзор потока данных, который происходит в системе (зеленые стрелки). Ниже приводится краткое введение в каждый компонент вместе со ссылками на подробное содержание. Поток данных описан ниже.
1. Компоненты
Scrapy Engine
Механизм отвечает за управление потоком данных через все компоненты системы и инициирование событий при выполнении соответствующих действий. Подробнее см. в разделе «Поток данных» ниже.
Планировщик
Планировщик принимает запросы от механизма и ставит их в очередь для предоставления механизму, когда механизм запросит их позже.
Загрузчик
Загрузчик отвечает за получение данных страницы и предоставление их движку, а затем пауку.
Spiders
Spider — это класс, написанный пользователями Scrapy для анализа ответа и извлечения элемента (то есть полученного элемента) или URL-адреса для дополнительных последующих действий. Каждый паук отвечает за работу с определенным (или несколькими) веб-сайтами. См. Пауки для получения дополнительной информации.
Item Pipeline
Конвейер элементов отвечает за обработку элементов, извлеченных пауком. Типичными процессами являются очистка, проверка и сохранение (например, доступ к базе данных). См. Конвейер элементов для получения дополнительной информации.
Промежуточное программное обеспечение загрузчика
Промежуточное ПО загрузчика — это особый хук между движком и загрузчиком, который обрабатывает ответ, передаваемый загрузчиком движку. Он предоставляет простой механизм расширения функциональности Scrapy путем вставки пользовательского кода. Дополнительную информацию см. в промежуточном программном обеспечении загрузчика.
Промежуточное ПО Spider
Промежуточное ПО паука — это особый хук между движком и пауком, который обрабатывает ввод (ответ) и вывод паука (элементы и запросы). Он предоставляет простой механизм расширения функциональности Scrapy путем вставки пользовательского кода. Дополнительные сведения см. в промежуточном программном обеспечении Spider.
2. Поток данных
Поток данных в Scrapy контролируется механизмом выполнения, и процесс выглядит следующим образом:
-
Механизм открывает веб-сайт (открывает домен), находит паука, который обрабатывает веб-сайт, и запрашивает у паука первые URL-адреса для сканирования.
-
Движок получает первый URL-адрес для обхода от Паука и планирует его с помощью Запроса в Планировщике.
-
Движок запрашивает у планировщика следующий URL для обхода.
-
Планировщик возвращает следующий URL-адрес для обхода движку, а движок перенаправляет URL-адрес загрузчику (загрузчику) через промежуточное программное обеспечение загрузки (направление запроса).
-
Как только страница загружена, загрузчик генерирует ответ для страницы и отправляет его в механизм через промежуточное программное обеспечение загрузки (направление ответа).
-
Движок получает ответ от загрузчика и отправляет его в Spider для обработки через промежуточное ПО Spider (направление ввода).
-
Паук обрабатывает ответ и возвращает просканированный элемент и (последующий) новый запрос механизму.
-
Механизм отправляет просканированный элемент (возвращенный пауком) в конвейер элементов и отправляет запрос (возвращенный пауком) планировщику.
-
Повторять (с шага 2) до тех пор, пока в планировщике больше не останется запросов и движок не закроет сайт.
3. Сеть, управляемая событиями
Scrapy основан на сетевом фреймворке, управляемом событиями.Twisted
записывать. Поэтому Scrapy реализуется неблокирующим (т.е. асинхронным) способом на основе соображений параллелизма.
Для получения дополнительной информации об асинхронном программировании и Twisted перейдите по следующим ссылкам:
3. 4 шага, чтобы сделать рептилий
-
Новый проект (scrapy startproject xxx): создайте новый проект сканера.
-
Уточните цель (напишите items.py): укажите цель, которую вы хотите очистить
-
Создайте сканер (spiders/xxsp der.py): создайте сканер, чтобы начать сканирование в Интернете.
-
Хранить контент (pipelines.py): разработка конвейеров для хранения просканированного контента.
В-четвертых, монтажная рама
Здесь мы используем conda для установки:
conda install scrapy
или использоватьpip
Установить:
pip install scrapy
Посмотреть установку:
➜ spider scrapy -h
Scrapy 1.4.0 - no active project
Usage:
scrapy <command> [options] [args]
Available commands:
bench Run quick benchmark test
fetch Fetch a URL using the Scrapy downloader
genspider Generate new spider using pre-defined templates
runspider Run a self-contained spider (without creating a project)
settings Get settings values
shell Interactive scraping console
startproject Create new project
version Print Scrapy version
view Open URL in browser, as seen by Scrapy
[ more ] More commands available when run from project directory
Use "scrapy <command> -h" to see more info about a command
1. Создайте проект
➜ spider scrapy startproject SF
New Scrapy project 'SF', using template directory '/Users/kaiyiwang/anaconda2/lib/python2.7/site-packages/scrapy/templates/project', created in:
/Users/kaiyiwang/Code/python/spider/SF
You can start your first spider with:
cd SF
scrapy genspider example example.com
➜ spider
использоватьtree
Команда может просматривать структуру проекта:
➜ SF tree
.
├── SF
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ └── __init__.py
└── scrapy.cfg
2. Создайте шаблон в каталоге пауков
➜ spiders scrapy genspider sf "https://segmentfault.com"
Created spider 'sf' using template 'basic' in module:
SF.spiders.sf
➜ spiders
Таким образом создается файл проекта sf.py.
# -*- coding: utf-8 -*-
import scrapy
class SfSpider(scrapy.Spider):
name = 'sf'
allowed_domains = ['https://segmentfault.com']
start_urls = ['http://https://segmentfault.com/']
def parse(self, response):
pass
Заказ:
# 测试爬虫是否正常, sf为爬虫的名称
➜ scrapy check sf
# 运行爬虫
➜ scrapy crawl sf
Статьи по Теме: