scrapy框架入门

155 阅读2分钟

Scrapy 是一个开源的 Python 爬虫框架,用于快速、高效地抓取和提取结构化数据。Scrapy 提供了一套强大的机制,可以轻松地定义爬虫、配置请求、处理响应、提取数据、存储结果等。下面是 Scrapy 框架入门的基本步骤:

  1. 安装 Scrapy

使用 pip 命令安装 Scrapy:

pip install scrapy
  1. 创建 Scrapy 项目

在终端中执行以下命令创建一个新的 Scrapy 项目:

scrapy startproject myproject

这将创建一个名为 myproject 的新目录,其中包含一个基本的 Scrapy 项目结构。

  1. 定义爬虫

在 Scrapy 项目中,爬虫是指一个 Python 类,它定义了如何从一个或多个网站抓取数据。可以使用 scrapy.Spider 类来定义一个爬虫。例如,下面的代码定义了一个名为 quotes 的爬虫,它从 quotes.toscrape.com/ 页面抓取名人名言:

import scrapy

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

    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(),
            }

        next_page = response.css('li.next a::attr(href)').get()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

在这个爬虫中,name 属性表示爬虫的名称,start_urls 属性表示爬虫从哪些 URL 开始抓取数据。parse 方法是爬虫的核心逻辑,它解析 HTTP 响应,提取目标数据,然后将结果作为 Python 字典对象返回。

  1. 运行爬虫

使用以下命令在终端中运行爬虫:

scrapy crawl quotes

其中,quotes 是爬虫的名称。Scrapy 会自动加载该爬虫,并从 start_urls 中的第一个 URL 开始抓取数据。

  1. 存储数据

Scrapy 默认将数据保存在 JSON 文件中。如果要将数据存储到数据库中,可以使用 Scrapy 提供的 Item 和 Pipeline 机制。具体来说,可以定义一个 Item 类,表示要抓取的数据结构,然后编写一个 Pipeline 类,将数据存储到数据库中。

这只是 Scrapy 框架入门的基础步骤,Scrapy 还提供了许多高级功能,如异步请求、反爬虫策略、分布式爬虫等。要深入了解 Scrapy,请参阅官方文档:docs.scrapy.org/en/latest/.