Использование фреймворка Scrapy, использование Scrapyrt

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

Scrapyrt предоставляет HTTP-интерфейс планирования для Scrapy. С ним нам больше не нужно выполнять команды Scrapy, но мы можем планировать задачи Scrapy, запрашивая HTTP-интерфейс, и нам не нужно прибегать к командной строке для запуска проекта. Если проект выполняется на удаленном сервере, рекомендуется использовать его для запуска проекта.

1. Цель этого раздела

В этой главе мы берем входной проект Scrapy в качестве примера, чтобы проиллюстрировать использование Scrapyrt.Адрес исходного кода проекта: https://github.com/Python3WebSpider/ScrapyTutorial.

2. Подготовка

Убедитесь, что Scrapyrt правильно установлен и работает.

3. Запустите службу

Сначала загрузите проект и запустите Scrapyrt в каталоге проекта, предполагая, что текущая служба работает на порту 9080. Далее будет кратко представлено использование Scrapyrt.

4. ПОЛУЧИТЬ запрос

В настоящее время метод запроса GET поддерживает следующие параметры.

  • spider_name: имя паука, тип строки, обязательный параметр. Если переданное имя паука не существует, возвращается ошибка 404.

  • url: ссылка для сканирования, строковый тип, этот параметр необходимо передавать, если начальная ссылка не определена. Если этот параметр передан, Scrapy будет напрямую использовать URL-адрес для создания запроса и игнорировать его напрямую.start_requests()Методы иstart_urlsОпределение свойств.

  • callback: Имя функции обратного вызова, тип строки, необязательные параметры. Если передано, эта функция обратного вызова будет использоваться для обработки, в противном случае функция обратного вызова, определенная в Spider, будет использоваться по умолчанию.

  • max_requests: максимальное количество запросов, числовой тип, необязательный параметр. Он определяет максимальный лимит запросов для Scrapy для выполнения запроса.Если он определен как 5, это означает, что выполняется не более 5 запросов, а остальные будут игнорироваться.

  • start_requests: представляет, следует ли выполнятьstart_requestsМетод, логический тип, необязательные параметры. Если определено в проекте Scrapystart_requests()метод, метод будет вызываться по умолчанию при запуске проекта. Но в Scrapyrt все по-другому, Scrapyrt не выполняется по умолчанию.start_requests()метод, если вы хотите выполнить, вам нужноstart_requestsпараметр установлен в значение true.

Выполняем следующую команду:

curl http://localhost:9080/crawl.json?spider_name=quotes&url=http://quotes.toscrape.com/

Результат показан на рисунке ниже.

Возвращается строка в формате JSON, и мы анализируем ее структуру следующим образом:

{
  "status": "ok",
  "items": [
    {
      "text": "“The world as we have created it is a process of o...",
      "author": "Albert Einstein",
      "tags": [
        "change",
        "deep-thoughts",
        "thinking",
        "world"
      ]
    },
    ...
    {
      "text": "“... a mind needs books as a sword needs a whetsto...",
      "author": "George R.R. Martin",
      "tags": [
        "books",
        "mind"
      ]
    }
  ],
  "items_dropped": [],
  "stats": {
    "downloader/request_bytes": 2892,
    "downloader/request_count": 11,
    "downloader/request_method_count/GET": 11,
    "downloader/response_bytes": 24812,
    "downloader/response_count": 11,
    "downloader/response_status_count/200": 10,
    "downloader/response_status_count/404": 1,
    "dupefilter/filtered": 1,
    "finish_reason": "finished",
    "finish_time": "2017-07-12 15:09:02",
    "item_scraped_count": 100,
    "log_count/DEBUG": 112,
    "log_count/INFO": 8,
    "memusage/max": 52510720,
    "memusage/startup": 52510720,
    "request_depth_max": 10,
    "response_received_count": 11,
    "scheduler/dequeued": 10,
    "scheduler/dequeued/memory": 10,
    "scheduler/enqueued": 10,
    "scheduler/enqueued/memory": 10,
    "start_time": "2017-07-12 15:08:56"
  },
  "spider_name": "quotes"
}

опущено здесьitemsподавляющее большинство.statusпоказывает статус сканирования,itemsЧастично это результат сканирования проекта Scrapy,items_droppedэто список игнорируемых элементов,statsстатистика результатов сканирования. Этот результат совпадает со статистикой, полученной при непосредственном запуске проекта Scrapy.

Таким образом, мы планируем проект Scrapy через HTTP-интерфейс и получаем результаты сканирования.Если проект Scrapy развернут на сервере, мы можем запустить службу Scrapyrt для планирования задач и получения результатов сканирования напрямую, что очень удобно. .

5. Почтовый запрос

В дополнение к запросам GET мы также можем запрашивать Scrapyrt через запросы POST. Но здесь тело запроса должно быть допустимой конфигурацией JSON, и соответствующие параметры могут быть настроены в JSON, и поддерживаются дополнительные параметры конфигурации.

В настоящее время конфигурация JSON поддерживает следующие параметры.

  • spider_name: имя паука, тип строки, обязательный параметр. Если переданное имя паука не существует, возвращается ошибка 404.

  • max_requests: максимальное количество запросов, числовой тип, необязательный параметр. Он определяет максимальный лимит запросов для Scrapy для выполнения запроса.Если он определен как 5, это означает, что выполняется не более 5 запросов, а остальные будут игнорироваться.

  • request: Конфигурация запроса, объект JSON, обязательные параметры. Через этот параметр можно определить каждый параметр Запроса, который необходимо указатьurlполе для указания ссылки для сканирования, другие поля являются необязательными.

Давайте рассмотрим пример конфигурации JSON следующим образом:

{
    "request": {
        "url": "http://quotes.toscrape.com/",
        "callback": "parse",
        "dont_filter": "True",
        "cookies": {
            "foo": "bar"
        }
    },
    "max_requests": 2,
    "spider_name": "quotes"
}

Мы выполняем следующую команду, передавая конфигурацию JSON и делая запрос POST:

curl http://localhost:9080/crawl.json -d '{"request": {"url": "http://quotes.toscrape.com/", "dont_filter": "True", "callback": "parse", "cookies": {"foo": "bar"}}, "max_requests": 2, "spider_name": "quotes"}'

Текущий результат аналогичен приведенному выше, и он также выводит статус сканирования, результаты, статистику и другой контент.

6. Заключение

Вышеупомянутый контент является соответствующим введением в использование Scrapyrt. С его помощью мы можем легко планировать выполнение проектов Scrapy и получать результаты сканирования. Дополнительные методы использования см. в официальной документации: http://scrapyrt.readthedocs.io.


Этот ресурс был впервые опубликован в личном блоге Цуй Цинцай Цзин Ми:Практическое руководство по разработке веб-краулера на Python3 | Цзин Ми

Если вы хотите узнать больше информации о поисковых роботах, обратите внимание на мой личный публичный аккаунт WeChat: Coder of Attack.

WeChat.QQ.com/Day/5 Это радость VE Z…(автоматическое распознавание QR-кода)