网络爬虫——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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 版本过低怎么升级_手机版本出现问题怎么办

    版本过低怎么升级_手机版本出现问题怎么办昨天心血来潮更新了下Eclipse下的SDK,但是由于网速、时间等原因,没有全部更新完。1、打开Eclipse的时候,提示ThisAndroidSDKrequiresAndroidDeveloperToolkitversion23.0.0orabove.Currentversionis22.6.2.v201403212031-1085508.Pleaseup

    2022年10月29日
    0
  • centos修改IP_项目废标能否随便换代理公司

    centos修改IP_项目废标能否随便换代理公司直接上代码:varsettings=newCefSettings();settings.CachePath="cache";settings.CefCommandLineArgs.Add("proxy-server",ProxyAddress);Cef.Initialize(settings);

    2022年9月19日
    0
  • cocos2d-x for android:士兵听我的命令移动

    cocos2d-x for android:士兵听我的命令移动

    2021年8月20日
    60
  • angular面试题及答案_angular面试

    angular面试题及答案_angular面试1.生命周期钩子生命周期的顺序,见下图:ngOnChanges:当组件数据绑定的输入属性发生变化是触发,该方法接收一个SimpleChanges对象,包括当前值和上一个属性值。首次调用一定发生在ngOnInit前,值得注意的是该方法仅限于对象的引用发生变化时才会触发。 ngOninit:初始化指令或组件,在angular第一次显示展示组件的绑定属性后调用,该方法只会调用一次 ng…

    2022年10月17日
    0
  • 无刷直流电机控制技术(无刷直流电机)

    2020-09-14无刷直流电机无位置传感器控制策略传统无刷直流电机安装的霍尔传感器增加了电机的体积和成本、可靠性低、抗干扰能力弱。因此提出了无刷直流电机无位置传感器控制策略,解决了传递霍尔传感器的弊端。1.无刷直流电机2.控制策略控制策略主要包括:反电动势法、三次谐波法、反电势积分法、磁链估测法、续流二极管法、智能控制法等。…

    2022年4月11日
    98
  • resnet18[通俗易懂]

    resnet18[通俗易懂]前言在前篇vgg16之后,无法成功训练vgg16,发现是自己电脑可用的显存太低了,遂放弃。在2015ILSVRC&COCO比赛中,何恺明团队提出的Resnet网络斩获第一,这是一个经典的网络。李沐说过,如果要学习一个CNN网络,一定是残差网络Resnet。与VGG相比,Resnet则更加出色,为后续的研究做下铺垫这是Resnet论文翻译参考链接:https://blog.csdn.net/weixin_42858575/article/details/93305238在之前的神经

    2022年5月26日
    65

发表回复

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

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