Scrapyd

Scrapyd:分步教程

无论您是要大规模地搜索数据,还是需要更简单的方法来管理多个蜘蛛、 Scrapyd 简化了流程,有助于保持一切顺利运行。

什么是 Scrapyd?

Scrapyd 是一款用于在服务器上部署和管理 Scrapy 蜘蛛的工具。你可以通过简单的 API 调用远程控制一切。Scrapyd 服务器作为后台服务运行,自动处理抓取请求并执行它们,无需人工干预。

使用 Scrapyd,您可以

  • 部署和管理您的 Scrapy 轻松实现远程项目。
  • 通过一个 统一的 JSON API.
  • 使用用户友好的网络界面监控和管理蜘蛛。
  • 通过在多个服务器上运行蜘蛛程序,扩大数据收集规模。
  • 通过调整并发蜘蛛的数量来提高服务器性能。
  • 使用 Celery 和 Gerapy 等工具自动执行任务。
  • 整合 使用 Python 的 Scrapy Django 等框架来增强网络应用程序。

现在,让我们深入了解如何使用 Scrapyd 部署 Scrapy 蜘蛛。

替代解决方案 - 网络抓取 API 和工具

如果您的项目需要进行大规模刮擦,而您又不想使用代理和 验证码解码器您可以选择 最佳网络搜索 API 和工具.下面,我列出了 5 大网络搜索工具。

  1. Bright Data - 最适合高级搜索;具有广泛的代理管理和可靠的应用程序接口。
  2. Octoparse - 用户友好的无代码工具,用于从网站自动提取数据。
  3. ScrapingBee - 面向开发人员的应用程序接口,可高效处理代理、浏览器和验证码。
  4. Scrapy - 开源 Python 框架是数据抓取和刮擦任务的理想选择。
  5. ScraperAPI - 利用先进的反僵尸技术处理棘手的刮擦问题;非常适合开发人员使用。

我与上述任何供应商都没有任何关系,我只是在使用它们时有过良好的体验。

如何使用 Scrapyd 运行 Scrapy 蜘蛛

先决条件

确保系统已安装 Python 3+。您需要通过 pip 安装 Scrapy、Scrapyd 和 Scrapyd-client。

pip install scrapyd scrapy scrapyd-client

设置 Scrapy 项目

创建 Scrapy 项目:使用命令 scrapy startproject 创建 Scrapy 项目。

创建蜘蛛:在 spiders 文件夹中创建一个 scraper.py 文件,其中包含以下基本蜘蛛程序:

from scrapy.spiders import Spider
class MySpider(Spider):
name = 'product_scraper'
start_urls = ['https://www.scrapingcourse.com/ecommerce/']
def parse(self, response):
products = response.css(ul.products li.product)
data = []
for product in products:
product_name = product.css(h2.woocommerce-loop-product__title::text).get()
price = product.css(bdi::text).get()
data.append({'product_name': product_name, 'price': price})
self.log(data)

测试您的蜘蛛:通过运行

scrapy crawl product_scraper

该功能应从电子商务页面上抓取并记录产品名称和价格。

在 Scrapyd 部署蜘蛛

启动 Scrapyd 服务器:运行以下命令启动 Scrapyd 服务器:

scrapyd

您将看到服务器在 http://localhost:6800 上运行。

配置 Scrapy 项目:修改项目中的 scrapy.cfg 文件,加入正确的部署 URL:

[settings]
default = scraper.settings
[deploy:local]
url = http://localhost:6800/
project = scraper

部署蜘蛛:使用以下命令将蜘蛛部署到 Scrapyd:

scrapyd-deploy local -p scraper

您应该会看到一个确认部署的 JSON 响应。

监控部署:打开浏览器并导航至 http://localhost:6800。您的项目应列在 "可用项目 "下。

使用 Scrapyd 管理蜘蛛

安排任务

您可以使用 Scrapyd 的 JSON API 调度蜘蛛。调度端点是 http://localhost:6800/schedule.json. 使用以下 curl 命令:

curl http://localhost:6800/schedule.json -d project=scraper -d spider=product_scraper

或者,您也可以创建一个 Python 脚本 (schedule.py) 来发出请求:

import requests
url = 'http://localhost:6800/schedule.json'
data = {'project': 'scraper', 'spider': 'product_scraper'}
response = requests.post(url、 data=data)
if response.status_code == 200:
print(response.json())
else:
print(response.json())

监测工作

要监控所有正在运行的任务,请使用 listjobs.json 端点:

curl http://localhost:6800/listjobs.json?project=scraper

您还可以创建一个 Python 脚本 (monitor.py) 进行监控:

import requests
url = 'http://localhost:6800/listjobs.json'
params = {'project': 'scraper'}
response = requests.get(url、 params=params)
if response.status_code == 200:
print(response.json())
else:
print(response.json())

取消工作

要取消正在运行的作业,请使用 cancel.json 端点。提供要取消的作业 ID:

curl http://localhost:6800/cancel.json -d project=scraper -d job=

或者,用 Python 语来说

import requests
url = 'http://localhost:6800/cancel.json'
data = {'project': 'scraper', 'job': '}
response = requests.post(url、 data=data)
if response.status_code == 200:
print(response.json())
else:
print(response.json())

ScrapydWeb:管理 Scrapy 蜘蛛的用户界面

ScrapydWeb 是一个基于网络的界面,用于管理 Scrapyd 任务。它允许您轻松安排和监控蜘蛛,但目前支持 Python 3.9 以下版本。

安装 ScrapydWeb:使用 pip 安装:

pip install scrapydweb

启动 ScrapydWeb 服务器: 在项目文件夹中运行命令 scrapydweb。界面将可通过 http://127.0.0.1:5000 访问。

安排和监控蜘蛛 使用该界面可安排、运行和监控蜘蛛。您还可以设置 cron 作业,配置用户代理和 cookies 等蜘蛛参数。

Gerapy:高级蜘蛛管理

Gerapy 是另一款基于 Django 和 Scrapy 的蜘蛛管理工具。它还提供额外的功能,如安排 cron 作业、可视化代码编辑器等。

安装 Gerapy:使用 pip 安装 Gerapy:

pip install gerapy

设置 Gerapy: 按照设置说明初始化和配置 Gerapy,以便与 Scrapyd 同步。

创建和安排任务: 使用 Gerapy 的网络界面创建任务,使用时间间隔或 cron 触发器安排任务,并监控任务执行情况。

结论

Scrapyd 是一款强大的解决方案,用于管理 Scrapy 蜘蛛,实现高效的任务调度、监控和扩展。使用 Scrapyd 的应用程序接口、ScrapydWeb 或 Gerapy,您可以简化网络搜索工作流程,提高工作效率。

类似文章