📜  Scrapy-创建项目(1)

📅  最后修改于: 2023-12-03 15:05:06.026000             🧑  作者: Mango

Scrapy-创建项目

Scrapy是一个用于抓取Web站点并从中提取结构化数据的Python框架。在本文中,我们将介绍如何使用Scrapy创建项目并开始抓取网站。

安装Scrapy

在开始之前,您需要先安装Scrapy。您可以通过运行以下命令在终端中安装Scrapy:

pip install scrapy
创建Scrapy项目

现在我们可以使用Scrapy命令创建一个新项目。请打开终端并运行以下命令:

scrapy startproject myproject

这将创建一个名为“myproject”的目录,其中包含以下文件和目录结构:

myproject/
    scrapy.cfg
    myproject/
        __init__.py
        items.py
        middlewares.py
        pipelines.py
        settings.py
        spiders/
            __init__.py

让我们看一下这些文件的含义:

  • scrapy.cfg - Scrapy项目配置文件
  • myproject/ - 我们的项目源代码
  • myproject/items.py - 项目中的item定义
  • myproject/middlewares.py - Scrapy中间件
  • myproject/pipelines.py - 项目管道文件
  • myproject/settings.py - 项目的设置文件
  • myproject/spiders/ - 保存我们的爬虫代码
创建爬虫

现在我们已经创建了项目,我们可以开始编写我们的第一个爬虫。让我们在myproject/spiders/目录中创建一个新的文件,命名为quotes_spider.py。

我们的爬虫代码将如下所示:

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
        'http://quotes.toscrape.com/page/2/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('span small::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

在这个例子中,我们使用Scrapy框架定义了一个名为“QuotesSpider”的爬虫类。这个爬虫将爬取 http://quotes.toscrape.com 网站,并提取每个引用的文本、作者和标签。我们将处理两个网页。

运行爬虫

现在,我们已经定义了我们的爬虫,让我们使用Scrapy runspider命令来启动它。请打开终端并运行以下命令:

cd myproject
scrapy crawl quotes

这将启动我们的名为quotes的爬虫,并开始抓取我们在start_urls中定义的URL。

您应该看到类似以下的输出:

2018-07-01 15:55:29 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/page/1/> (referer: None)
2018-07-01 15:55:29 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/page/2/> (referer: None)
2018-07-01 15:55:29 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/1/>
{'text': '“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”', 'author': 'Albert Einstein', 'tags': ['change', 'deep-thoughts', 'thinking', 'world']}
2018-07-01 15:55:29 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/2/>
{'text': '“It is our choices, Harry, that show what we truly are, far more than our abilities.”', 'author': 'J.K. Rowling', 'tags': ['abilities', 'choices']}
...
结论

现在,您已经了解了如何使用Scrapy创建项目,并编写简单的爬虫。Scrapy提供了许多其他功能和工具,您可以通过阅读官方文档进一步了解。