📜  Scrapy-蜘蛛(1)

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

Scrapy-蜘蛛介绍

Scrapy是一个用于爬取网站内容并提取结构化数据的Python应用程序框架。它广泛用于数据挖掘、信息处理和网络监控(例如抓取网站上价格比较信息)。Scrapy可以从各种来源(如 APIs 和 HTML )中提取数据,并将其保存到多种格式(如 JSON、CSV 或 SQLite)中。

Scrapy的特点
  • 快速高效: Scrapy已设计成高效且快速,因此它可以快速处理大量数据和流量,从而大大提高生产力。

  • 编写简单: Scrapy具有可读性和可扩展性,使得编写和维护爬虫变得容易。Scrapy提供了丰富的文档和软件包,因此您可以快速入门。

  • 支持多个网站: Scrapy 支持从多个网站爬取数据和提取结构化数据。这意味着您无需编写多个爬虫,就可以从不同的平台和数据源中提取数据。

  • 极度灵活: Scrapy提供了许多可配置选项,可以根据数据源和挖掘目的进行更改以改善爬虫性能和减少错误。

让我们一起使用Scrapy来编写爬虫
安装Scrapy

若要安装Scrapy,您需要使用命令行输入以下指令:

pip install scrapy
创建一个Scrapy项目

若要创建Scrapy项目,您需要在命令行执行以下代码:

scrapy startproject <project-name>

这条命令将会创建一个包含Scrapy的目录结构,如下所示:

<project_name>/
    scrapy.cfg            # 部署配置文件
    <project_name>/          # Python模块
        __init__.py
        items.py          # 项目中的用于描述数据模型的文件
        middleware.py     # 项目中间件文件
        pipelines.py      # 项目管道文件
        settings.py       # 项目设置文件
        spiders/          # 爬虫代码,如有多个爬虫则可以在这里定义更多的代码
            __init__.py
编写爬虫代码

我们将创建一个名为quotes_spider.py的爬虫,以爬取http://quotes.toscrape.com/网站上的名言列表,该文件位于<project_dir> /<project_name>/spiders/下。

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

爬虫的parse()方法将会提取页面上的名言信息,并将数据做成字典的形式进行返回。

运行爬虫

若要启动Scrapy爬虫,请使用以下命令:

scrapy crawl <spider-name>

在此处, <spider-name> 是一个已定义的爬虫名称,即在您的项目的spiders/目录中定义的Python文件的名称(即这里的'quotes',按需替换即可)。

爬虫数据保存

在parse()方法中,我们创建了一个包含名言信息的字典,并通过yield语句来返回这个字典。在返回结果的同时,数据可以被保存到文件中。

请使用以下命令启动生成csv或json文件:

#生成csv文件
scrapy crawl quotes -o quotes.csv

#生成json文件
scrapy crawl quotes -o quotes.json
总结

Scrapy被广泛应用于信息处理和网络监控领域,可以从各种来源中提取数据,并将其保存到多种格式中。通过使用Scrapy,我们可以快速、高效地编写和维护Python爬虫。以上就是使用Scrapy编写爬虫的基本介绍,希望这能对您有所启发。