python爬虫之scrapy框架介绍

在这里插入图片描述

一、Scrapy框架简介 Scrapy 是一个开源的 Python 库和框架,用于从网站上提取数据。它为自从网站爬取数据而设计,也可以用于数据挖掘和信息处理。Scrapy 可以从互联网上自动爬取数据,并将其存储在本地或在 Internet 上进行处理。Scrapy 的目标是提供更简单、更快速、更强大的方式来从网站上提取数据。

二、Scrapy的基本构成 Scrapy 框架由以下五个主要组件构成:

  1. Spiders:它是 Scrapy 框架的核心部分,主要用于定义从网站上提取数据的方式。Spider 是一个 Python 类,它定义了如何从特定的网站抓取数据。

  2. Items:它用于定义爬取的数据结构,Scrapy 将在爬取过程中自动创建 Item 对象,它们将被进一步处理,例如存储到数据库中。

  3. Item Pipeline:它是 Scrapy 框架用于处理 Item 对象的机制。它可以执行诸如数据清洗、验证和存储等操作。

  4. Downloader:它是 Scrapy 框架用于下载页面的组件之一。它正在处理网络请求,从互联网上下载页面并将其回传到 Spider 中。

  5. Middleware:它是 Scrapy 框架用于处理 Spider、Downloader 和 Item Pipeline 之间交互的组件之一。中间件在这个架构中扮演了一个交换件角色,可以添加、修改或删除请求、响应和 Item 对象。

三、Scrapy框架的运行流程 Scrapy 的运行流程可以分为以下几步:

  1. 下载调度器:Scrapy 框架接收 URL 并将其传递给下载调度器。下载调度器负责队列管理和针对每个 URL 的下载请求的优先级。它还可以控制并发请求的总数,从而避免对服务器的过度负载。

  2. 下载器:下载器使用 HTTP 请求从互联网上下载 HTML 或其他类型的页面内容。下载器可以通过中间件拦截处理、修改或过滤请求和响应。下载器还可以将下载的数据逐步传递到爬虫中。

  3. 爬虫:Spider 接收下载器提供的页面数据,并从中提取有用的信息。Spider 可以通过规则来定义如何从页面中提取数据。Spider 可以将提取的数据传递给 Item Pipeline 进行处理。

  4. Item Pipeline:Item Pipeline 进行数据的清洗、验证和存储等操作。它还可以将数据存储到数据库、JSON 或 CSV 文件中。

  5. 输出:Scrapy 可以输出爬取的数据到命令行、文件或 JSON 格式。输出可以用于生成各种类型的报告或分析。

四、Scrapy框架的使用 下面我们将介绍如何使用 Scrapy 框架。

  1. 安装 Scrapy Scrapy 框架可以通过 pip 安装。使用以下命令安装 Scrapy:

pip install scrapy 2. 创建 Scrapy 项目 使用以下命令创建 Scrapy 项目:

scrapy startproject project_name 其中,project_name 是项目的名称。

  1. 创建 Spider 使用以下命令创建 Spider:

scrapy genspider spider_name domain_name 其中,spider_name 是 Spider 的名称,domain_name 是要爬取的域名。

在 Spider 中,我们可以定义如何从网站上提取数据。下面是一个简单的 Spider 的示例:

import scrapy

class MySpider(scrapy.Spider): name = ‘myspider’ start_urls = [‘www.example.com’]

def parse(self, response):
    # 提取数据的代码
    pass

在这个示例中,我们定义了一个 Spider,并指定了它的名称和要爬取的 URL。我们还实现了一个 parse 方法,用于提取页面上的数据。

  1. 创建 Item 在 Scrapy 中,我们可以定义自己的数据结构,称为 Item。我们可以使用 Item 类来定义数据结构。下面是一个 Item 的示例:

import scrapy

class MyItem(scrapy.Item): title = scrapy.Field() author = scrapy.Field() content = scrapy.Field() 在这个示例中,我们定义了一个 Item,并定义了三个字段:title、author 和 content。

  1. 创建 Item Pipeline 在 Scrapy 中,我们可以定义 Item Pipeline 来处理 Item 对象。Item Pipeline 可以执行以下操作:

清洗 Item 数据 验证 Item 数据 存储 Item 数据 下面是一个简单的 Item Pipeline 的示例:

class MyItemPipeline(object): def process_item(self, item, spider): # 处理 Item 的代码 return item 在这个示例中,我们定义了一个 Item Pipeline,并实现了 process_item 方法。

  1. 配置 Scrapy Scrapy 有几个重要的配置选项。其中,最常见的是 settings.py 文件中的选项。下面是一个 settings.py 文件的示例:

BOT_NAME = ‘mybot’ SPIDER_MODULES = [‘mybot.spiders’] NEWSPIDER_MODULE = ‘mybot.spiders’

ROBOTSTXT_OBEY = True

DOWNLOADER_MIDDLEWARES = { ‘mybot.middlewares.MyCustomDownloaderMiddleware’: 543, }

ITEM_PIPELINES = { ‘mybot.pipelines.MyCustomItemPipeline’: 300, } 在这个示例中,我们定义了一些重要的选项,包括 BOT_NAME、SPIDER_MODULES、NEWSPIDER_MODULE、ROBOTSTXT_OBEY、DOWNLOADER_MIDDLEWARES 和 ITEM_PIPELINES。

  1. 运行 Scrapy 使用以下命令运行 Scrapy:

scrapy crawl spider_name 其中,spider_name 是要运行的 Spider 的名称。

五、Scrapy框架的案例 下面我们来实现一个简单的 Scrapy 框架的案例。

  1. 创建 Scrapy 项目 使用以下命令创建 Scrapy 项目:

scrapy startproject quotes 我们将项目名称设置为 quotes。

  1. 创建 Spider 使用以下命令创建 Spider:

scrapy genspider quotes_spider quotes.toscrape.com 其中,quotes_spider 是 Spider 的名称,quotes.toscrape.com 是要爬取的域名。

在 Spider 中,我们定义如何从网站上提取数据。下面是一个 quotes_spider.py 文件的示例:

import scrapy

class QuotesSpider(scrapy.Spider): name = “quotes”

def start_requests(self):
    urls = [
        'http://quotes.toscrape.com/page/1/',
        'http://quotes.toscrape.com/page/2/',
    ]
    for url in urls:
        yield scrapy.Request(url=url, callback=self.parse)

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)

在这个示例中,我们定义了一个 Spider,并指定了它的名称。我们还实现了 start_requests 方法,用于定义要爬取的 URL。我们还实现了一个 parse 方法,用于提取页面上的所有引用。我们使用 response.css 方法选择要提取的元素,并使用 yield 语句返回一个字典对象。

  1. 运行 Spider 使用以下命令运行 Spider:

scrapy crawl quotes 这个示例将下载 quotes.toscrape.com 网站上的页面,并从中提取所有引用。它将引用的文本、作者和标签存储到 MongoDB 数据库中。

六、总结 Scrapy 是一个功能强大的 Python 库和框架,用于从网站上提取数据。它为自从网站爬取数据而设计,也可以用于数据挖掘和信息处理。Scrapy 的目标是提供更简单、更快速、更强大的方式来从网站上提取数据。Scrapy 框架由 Spiders、Items、Item Pipeline、Downloader 和 Middleware 等组件构成,并具有可定制和可扩展性强的特性。使用 Scrapy 框架可以大大减少开发人员在网络爬虫开发中的时间和精力,是一个非常优秀的爬虫框架。

---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值