网络爬虫——scrapy入门案例

网络爬虫——scrapy入门案例一、概述Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试.其最初是为了页面抓取(更确切来说,网络抓取)所设计的,后台也应用在获取API所返回的数据(例如AmazonAssociatesWebServices)或者通用的网络爬虫.Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider

大家好,又见面了,我是你们的朋友全栈君。

一、概述

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试. 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 后台也应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫. Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持.

二、Scrapy五大基本构成:

Scrapy框架主要由五大组件组成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我们分别介绍各个组件的作用。

(1)、调度器(Scheduler): 调度器,说白了把它假设成为一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是 什么,同时去除重复的网址(不做无用功)。用户可以自己的需求定制调度器。 (2)、下载器(Downloader): 下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源。Scrapy的下载器代码不会太复杂,但效率高,主要的原因是Scrapy下载器是建立在twisted这个高效的异步模型上的(其实整个框架都在建立在这个模型上的)。 (3)、 爬虫(Spider): 爬虫,是用户最关心的部份。用户定制自己的爬虫(通过定制正则表达式等语法),用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。 (4)、 实体管道(Item Pipeline): 实体管道,用于处理爬虫(spider)提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。 (5)、Scrapy引擎(Scrapy Engine): Scrapy引擎是整个框架的核心.它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153144.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月26日 下午4:16
下一篇 2022年6月26日 下午4:16


相关推荐

  • 邻接表和逆邻接表

    邻接表和逆邻接表邻接表作为图的一种存储方式 在存储稀疏图上相对于邻接矩阵有相当大的空间节省 如一个稀疏图的顶点个个数为 n 边数为 e 用邻接矩阵存储需要 n 2 空间 而真正进行存储的只有 2e 个空间 剩下的 n 2 2e 都浪费了 但是对于邻接表来讲 存储空间只需要 n 2e 个 相对于邻接矩阵减少了很多 邻接表虽然在空间上有很大的优势 但是对于一个有向图 如果需要只要每个顶点的入度就需要遍历整个邻接表 在效率上很低下的 因

    2026年3月19日
    2
  • 免费天气api 真正可用

    免费天气api 真正可用天气 api 免费 2022 真正可用天气 api

    2026年3月16日
    2
  • STM32学习笔记一一UCOSII(1)

    STM32学习笔记一一UCOSII(1)1 简介 UCOSII 是一个可以基于 ROM 运行的 可裁减的 抢占式 实时多任务内核 具有高度可移植性 特别适合于微处理器和控制器 是和很多商业操作系统性能相当的实时操作系统 RTOS 1 1UCOSII 体系结构图 UCOSII 的移植 我们只需要修改 os cpu h os cpu a asm 和 os cpu c 等三个文件 os cpu h 进行数据类型的定义

    2026年3月18日
    2
  • 使用netty4.x 编写TCP服务器关于握手问题

    使用netty4.x 编写TCP服务器关于握手问题

    2021年9月8日
    70
  • 基于注解式的分布式Elasticsearch的封装

    基于注解式的分布式Elasticsearch的封装原生的RestLevelClient不好用,构建检索等很多重复操作。对bboss-elasticsearch进行了部分增强:通过注解配合实体类进行自动构建索引和自动刷入文档,复杂的业务检索需要自己在xml中写Dsl。用法与mybatis-plus如出一辙。依赖<dependency> <groupId>org.elasticsearch</gr…

    2025年7月26日
    5
  • JMH初探

    JMH初探JMH入门(很多情况下需要做性能基准测试(benchmark)。简单的说就是,在几种类似的解决方案中,寻找效率较高的。比如对比一下thrift,protobuf,avro在对象序列化时的效率等。这种测试通常需要对被测的代码段反复执行,最后取平均值,然后横向对比几种方案。如果能有(时间、CPU、内存、IO)曲线图表输出就更加直观了。一开始考虑用JMeter来做,但是这个框架似乎有点大,看了几次都

    2022年7月11日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号