Scrapy, Scrapyd, 和 ScrapydWeb 的使用案例

作者:沙与沫2024.01.22 12:52浏览量:11

简介:本文将通过一个简单的案例演示如何使用 Scrapy, Scrapyd, 和 ScrapydWeb。我们将使用这些工具从网站上抓取数据,并将结果存储到数据库中。

Scrapy 是一个用于抓取网站数据的 Python 框架,Scrapyd 是一个用于部署和管理 Scrapy 项目的工具,而 ScrapydWeb 是一个基于 web 的界面,可以用来监控和管理部署在 Scrapyd 上的项目。
首先,我们需要安装这些工具。可以使用 pip 来安装:

  1. pip install scrapy
  2. pip install scrapyd
  3. pip install scrapyd-client

接下来,我们将创建一个简单的 Scrapy 项目来抓取数据。在终端中运行以下命令来创建一个新的 Scrapy 项目:

  1. scrapy startproject myproject

这将在当前目录下创建一个名为 myproject 的新目录,其中包含一个基本的 Scrapy 项目结构。进入项目目录:

  1. cd myproject

现在我们可以创建一个新的 Scrapy 爬虫。在 myproject 目录下运行以下命令:

  1. scrapy genspider myspider example.com

这将在 myproject/spiders 目录下创建一个名为 myspider.py 的新文件,其中包含一个基本的爬虫模板。我们可以在这个文件中编写爬虫逻辑。例如,我们可以使用以下代码来抓取网站上的标题:

  1. import scrapy
  2. class MySpider(scrapy.Spider):
  3. name = 'myspider'
  4. start_urls = ['http://example.com']
  5. def parse(self, response):
  6. titles = response.css('title::text').getall()
  7. for title in titles:
  8. yield {'title': title}

现在我们已经创建了一个基本的爬虫,接下来我们将使用 Scrapyd 来部署它。首先,我们需要将爬虫打包成一个 egg 文件。在 myproject 目录下运行以下命令:

  1. scrapy crawl myspider -o output.json -t jsonlines

这将使用我们的爬虫抓取数据,并将结果保存到 output.json 文件中。现在我们可以将这个 egg 文件部署到 Scrapyd 上。在终端中运行以下命令:

  1. scrapyd-deploy default -p myproject -e /path/to/output.egg

这将在 Scrapyd 上部署我们的项目,并指定 egg 文件的路径。现在我们可以通过 ScrapydWeb 来监控和管理我们的项目。在浏览器中打开 http://localhost:6800/,你将看到一个基于 web 的界面,其中列出了所有部署在 Scrapyd 上的项目。你可以查看项目的状态、启动和停止爬虫、查看日志等。例如,要查看我们的项目的状态,可以在 ScrapydWeb 中选择我们的项目,然后点击“状态”按钮。这将显示项目的当前状态、爬虫运行时间和抓取的数据等信息。我们还可以使用 ScrapydWeb 来导出爬虫结果。在浏览器中打开 http://localhost:6800/feeds,你将看到一个列出所有可用 feed 的页面。选择我们的项目和 feed,然后点击“下载”按钮,即可将抓取的数据导出为 CSV、JSON 或 XML 格式的文件。这样,我们就可以轻松地使用 Scrapy、Scrapyd 和 ScrapydWeb 来从网站上抓取数据,并将结果存储数据库中。