Scrapyd:分步教程
无论您是要大规模地搜索数据,还是需要更简单的方法来管理多个蜘蛛、 Scrapyd 简化了流程,有助于保持一切顺利运行。
什么是 Scrapyd?
Scrapyd 是一款用于在服务器上部署和管理 Scrapy 蜘蛛的工具。你可以通过简单的 API 调用远程控制一切。Scrapyd 服务器作为后台服务运行,自动处理抓取请求并执行它们,无需人工干预。
使用 Scrapyd,您可以
- 部署和管理您的 Scrapy 轻松实现远程项目。
- 通过一个 统一的 JSON API.
- 使用用户友好的网络界面监控和管理蜘蛛。
- 通过在多个服务器上运行蜘蛛程序,扩大数据收集规模。
- 通过调整并发蜘蛛的数量来提高服务器性能。
- 使用 Celery 和 Gerapy 等工具自动执行任务。
- 整合 使用 Python 的 Scrapy Django 等框架来增强网络应用程序。
现在,让我们深入了解如何使用 Scrapyd 部署 Scrapy 蜘蛛。
替代解决方案 - 网络抓取 API 和工具
如果您的项目需要进行大规模刮擦,而您又不想使用代理和 验证码解码器您可以选择 最佳网络搜索 API 和工具.下面,我列出了 5 大网络搜索工具。
- Bright Data - 最适合高级搜索;具有广泛的代理管理和可靠的应用程序接口。
- Octoparse - 用户友好的无代码工具,用于从网站自动提取数据。
- ScrapingBee - 面向开发人员的应用程序接口,可高效处理代理、浏览器和验证码。
- Scrapy - 开源 Python 框架是数据抓取和刮擦任务的理想选择。
- 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,您可以简化网络搜索工作流程,提高工作效率。