Scrapy Learning of Python Crawler (базовый)

задняя часть Python рептилия Scrapy

Добавить Автора

Публичный аккаунт WeChat:PythonНаука о данных

Знаю почти:zhuanlan.zhihu.com/pypcfx


На пути рептилий узнайscrapyявляется важным звеном. Может быть, есть много друзей, которые также контактируют и учатся в этот моментscrapy, так хорошо, давайте учиться вместе. связатьсяscrapyУ друзей могут возникнуть сомнения, все-таки это фреймворк, и я не знаю, с чего начать. Из этой статьи блогеры откроютscrapyОбучающая серия, рассказывающая о том, как быстро начать работу со scrapy и умело его использовать.

Как и первая статья, эта статья в основном знакомит и понимаетscrapy, в конце порекомендую книгу об обученииscrapyКнига и как ее получить.

Зачем использовать краулер-фреймворк?

Если у вас есть определенное представление об основах краулера, то пришло время узнать о структуре краулера.Так зачем использовать краулер-фреймворк?

  • Суть обучения в том, чтоизучить идею программирования, и не следует ограничиваться только тем, как он используется. От понимания до освоения фреймворка — это на самом деле процесс понимания идеи.

  • Фреймворк также приносит большое удобство в нашу разработку. Уже написано много правил и положений, и нам не нужно повторять колеса, нам нужно только настроить функции, которые мы хотим реализовать, под свои нужды, что значительно снижает нагрузку.

  • Обратитесь к превосходному коду фреймворка и изучите его, чтобы улучшить навыки программирования.

Блогер изучил фреймворк краулера на основе этих моментов в то время, но помните, что основная цель — освоить идею фреймворка и возможности фреймворка. Только освоив эту идею, вы сможете лучше ее использовать и даже расширить.

Введение в фреймворк scrapy

Наиболее популярными фреймворками для поисковых роботов являютсяscrapyиpyspider, но тот, кого все любят я думаю нетscrapyНикто.scrapyЭто продвинутый краулер-фреймворк с открытым исходным кодом, мы можем назвать его **"scrapy language"**. оно используетpythonОн используется для обхода веб-страниц, извлечения структурных данных и может лучше применять полученные структурные данные для анализа данных и интеллектуального анализа данных.scrapyИмеет следующие особенности:

  • scrapyоснованный на событиях механизм, который используетtwistedдизайн реализованнеблокирующийасинхронная работа. По сравнению с традиционными блокирующими запросами это значительно улучшает использование ЦП и эффективность сканирования.
  • Конфигурация проста, а сложные функции можно реализовать, просто установив одну строку кода.
  • Масштабируемый и богатый плагинами, такими как распределенныеscrapy + redis, визуализация сканера и другие плагины.
  • Анализ прост в использовании,scrapyв упаковкеxpathи другие парсеры, обеспечивающие более удобный и продвинутыйselectorКонструктор, который эффективно обрабатывает сломанныеHTMLкод и кодирование.

Какой из них лучше использовать скрайп и запросы + бс?

Некоторые друзья спрашивали, зачем использовать скрап, разве ты не можешь его не использовать? использоватьresquests + beautifulsoupКомбинацию сделать нельзя?

Не волнуйтесь, просто делайте это так, как вам удобно.resquests + beautifulsoupКонечно, запросы + любой парсер подойдет, это очень хорошая комбинация. Преимущество этого в том, что мы можем гибко писать собственный код, не привязываясь к фиксированному шаблону. Не всегда удобно использовать фиксированный фреймворк, например, обработка анти-антилазания в scrapy не очень полная, и часто ее приходится решать самой.

Но для некоторых малых и средних задач сканераscrapyЭто действительно очень хороший выбор, он позволяет нам не писать повторяющийся код и обладает отличной производительностью. Когда мы пишем собственный код, например, для повышения эффективности сканирования, мы каждый раз пишем многопоточный или асинхронный код, что сильно тратит время на разработку. На данный момент лучше использовать уже написанный фреймворк, нужно только написать правила парсинга иpipelineДостаточно. Итак, что именно нам нужно сделать? Взгляните на картинку ниже, чтобы понять.

Ссылки в конце этой статьи

Итак, какой из них использовать, зависит от личных потребностей и предпочтений. А вот что касается порядка обучения, то блогеры предлагают сначала изучитьresquests + beautifulsoup, затем коснитесьScrapyЭффект может быть лучше, только для справки.

Архитектура Скрэпи

изучениеScrapyПрежде чем нам нужно знатьScrapyАрхитектура, понимание этой архитектуры имеет решающее значение для изучения scrapy.

Изображение из официальной документации Scrapy

Следующее описание взято из официального документа (цитируется здесь), который очень ясен и его можно понять, взглянув на это изображение.

компоненты

Scrapy EngineМеханизм отвечает за управление потоком данных через все компоненты системы и инициирование событий при выполнении соответствующих действий. Подробнее см. в потоке данных ниже.(Data Flow)часть.

ПланировщикПланировщик принимает от движкаrequestи поставьте их в очередь, чтобы они были доступны для механизма позже, когда механизм запросит их.

ЗагрузчикЗагрузчик отвечает за выборку данных страницы и предоставление их движку, а затемspider.

Spiders SpiderдаScrapyНаписано пользователем для анализаresponseи извлечьitem(то есть выбранный элемент) или класс дополнительного последующего URL. каждыйspiderОтвечает за работу с конкретным (или некоторыми) веб-сайтом.

Item Pipeline Item Pipelineответственный за обработкуspiderизвлеченitem. Типичными процессами являются очистка, проверка и сохранение (например, доступ к базе данных).

Промежуточное программное обеспечение загрузчикаПромежуточное ПО загрузчика — это особый хук между движком и загрузчиком.(specific hook),иметь дело сDownloaderперешел к двигателюresponse. Он обеспечивает простой механизм расширения путем вставки пользовательского кода.ScrapyФункции.

ПО промежуточного слоя Spider Spider中间件это специфический крючок между двигателем и крестовиной(specific hook),иметь дело сspiderВход (ответ) и выход (элементы и запросы). Он предоставляет простой механизм расширения функциональности Scrapy путем вставки пользовательского кода.

процесс потока данных

  1. Движок открывает сайт(open a domain), НайдиSpiderи кspiderЗапросите первые URL-адреса для сканирования.
  2. двигатель отSpiderПолучить первый URL для сканирования в планировщике(Scheduler)отRequestрасписание.
  3. Движок запрашивает у планировщика следующий URL для обхода.
  4. Планировщик возвращает следующий URL-адрес, который должен быть просканирован, механизму, и механизм передает URL-адрес через промежуточное программное обеспечение загрузки (запрос(request)направление) вперед к загрузчику(Downloader).
  5. После загрузки страницы загрузчик генерируетResponse, и передать его через промежуточное ПО загрузки (возврат(response)направлении) к двигателю.
  6. Движок получает от загрузчикаResponseи черезSpider中间件(направление ввода) отправляется в Spider для обработки.
  7. Spiderиметь дело сResponseи вернуть просканированноеItemИ (продолжение) новый запрос к движку.
  8. Движок отдает просканированный элемент (возвращенный пауком) вItem Pipeline, отправьте Запрос (возвращенный Пауком) планировщику.
  9. (с шага 2) повторять до тех пор, пока в планировщике больше не останетсяrequest, двигатель выключает сайт.

Справочник по обучению скрапи

Следующий блоггер перечисляет два обучающихscrapyсправочный материал.

  • Первое, конечно, что и говорить, официальная документация по scrapy хорошо написана и детализирована. Ссылка: https://doc.scrapy.org/en/latest/index.html
  • Вторая — книга о скрапи,"обучение скраппи"

Ссылаться на: https://doc.scrapy.org/en/latest/index.html https://www.cnblogs.com/x-pyue/p/7795315.html


Если вы хотите изучить большие данные Python, вы можете подписаться на общедоступную учетную запись WeChat.Python数据科学, блоггеры всегда будут обновлять захватывающий контент и делиться более практичными пояснениями, погружая вас в мир данных.