Scrapy框架

Day83 爬虫之Scrapy框架

Scrapy框架使用、数据爬取实战演示

10-04侠课岛    基础入门       

后端/后端/Python 由浅入深入门 15     0     282

总结

1.scrapy框架介绍

  • Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化 的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试;

2.Scrapy五大基本构成

  • Scrapy框架主要由五大组件组成,分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine);

  • 调度器:可以假设成一个URL的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址;

  • 下载器:是所有组件中负担最大的,用于高速地下载网络上的资源;

  • 爬虫:是用户最关心的部份,用户定制自己的爬虫,用于从特定的网页中提取自己需要的信息,也可以从中提取出链接,让Scrapy继续抓取下一个页面;

  • 实体管道:用于处理爬虫提取的实体,要的功能是持久化实体、验证实体的有效性、清除不需要的信息;

  • Scrapy引擎:是整个框架的核心,用来控制调试器、下载器、爬虫,实际上引擎相当于计算机的CPU,控制着整个流程;

3.使用scrapy框架爬取网页数据

  • 第一步:首先要使用scrapy框架需要先安装它,可以使用pip安装scrapy框架,注意如果在Windows系统下直接使用pip命令行安装可能会报错,这时需要手动安装几个依赖库如wheel、lxml、Twisted等,报错信息会提示你缺少哪个库。这里单独介绍一下Twisted插件的安装,它的下载地址为:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted, 进入后找到twisted,选择下载对应的版本,其中cp表示python版本,下载完成后进入终端,输入pip install Twisted-18.7.0-cp36-cp36m-win32.whl,这里注意你下载的是哪个版本就输入哪个版本的文件名,安装完成后再输入pip install scrapy就能成功安装scrapy框架了;

  • 第二步:然后可以创建一个用于爬取网页数据的新项目,之后再可以通过scrapy命令在创建的项目中创建一个模版,创建模版的命令行:scrapy startproject 模版名

  • 第三步:可以在刚刚创建的模板中的spiders文件夹中创建一个蜘蛛文件,用于爬取网页数据的,假设我们爬取的是网站是dribbble,那么命令行是:scrapy genspider dribbble dribbble.com,其中dribbble是你创建的蜘蛛的文件名,而dribbble.com表示爬取的目标网址的域名,你想爬取哪个网站就使用哪个网站的域名。比如说要爬取csdn网站的数据,那创建蜘蛛文件的命令是:scrapy genspider csdn www.csdn.net

  • 第四步:如果要启动我们创建的蜘蛛文件,我们可以使用命令行:scrapy crawl dribbble,这里的dribbble是蜘蛛文件中name的对应值;

  • 第五步:想要测试爬去数据是否成功,我们可以在项目的模板中创建一个测试文件,然后通过debug来进行项目调试,可以输出我们想要爬取的网页数据;

  • 第六步:爬取数据时需要遵循爬虫协议,它用来限定爬虫程序可以爬取的内容范围,位于scrapy 项目的 settings.py文件中默认 ROBOTSTXT_OBEY = True,即遵守此协议,当我们想要爬取的内容不符合该协议但仍要爬取时,可以设置 ROBOTSTXT_OBEY = False,表示不遵守此协议;

  • 第七步:这样我们就可以开始使用Xpath选择器或者CSS选择器来解析想要爬取的页面数据了;

3.Xpath选择器的介绍

  • XPath的全称是XML Path Language,即XML路径语言,它是一种在结构化文档中定位信息的语言,XPath使用路径表达式来选取XML文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的;

  • 使用XPath选取节点的常用语法有:*表示选择HTML页面中任意的节点、/表示从根节点选取、//表示从匹配选择的当前节点选择文档中的节点,不考虑它们的位置、.表示选取当前节点、..表示选取当前节点的父节点、@表示选取属性。

  • 谓语用来查找某个特定的节点或者包含某个指定的值的节点,谓语嵌在方括号中,比如//body//a[1]表示选取属于body 子元素的第一个 a 元素,//a[@href]表示选取所有拥有名为 href 的属性的 a 元素等;

  • 除了索引、属性外,Xpath还可以使用便捷的函数来增强定位的准确性,如contains(s1,s2)表示如果s1中包含s2则返回true,反之返回false、text()表示获取节点中的文本内容、starts-with()表示从起始位置匹配字符串;

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

15

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录



|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?