在这之前我们先了解一下什么是Scrapy?

  • Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛
  • 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便
  • Scrapy 使用了 Twisted’twɪstɪd异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求

Scrapy安装

Scrapy框架因为功能十分强大,所以依赖很多库,不能直接安装,需要先安装依赖库,因为我的电脑在Windows下,所以这里展示Windows下的安装方法(如果有其他平台的需要,欢迎给我留言我在发出来)
需要安装4个依赖库分别是

  • lxml(这个最重要),使用pip命令安装

    pip3 install lxml
    若没有报错,则安装成功,如果报错提示缺少libxml2 库,
    可以使用wheel文件进行安装 libxml2
    
  • pyOpenSSL

      需要在官网下载wheel文件 pyOpenssL下载后使用pip3 install pyOpenSSL-17.2.0-py2.py3-none-any.whl
    
  • Twisted

      同理,需要在官网下载wheel文件 Twisted,但是有一件事,一定要记得在控制台下输入
    

python
查看你的电脑版本和python版本,然后在上面的地址中下载对应的wheel文件
然后使用命令安装
pip3 install Twisted-17.5.0-cp36-cp36m-win_amd64.whl

  • PyWin32

      在官网下载对应版本的安装包双击安装即可 pywin32在依赖包全部安装成功前提下安装Scrapy框架,使用pip命令
    

pip3 install Scrapy

就证明 Scrapy 已经安装好了

Scrapy使用

使用之前你要清楚这么一件事,Scrapy框架和你自己编写的区别,我理解的区别就是没什么区别,你编写的爬虫也是为了抓取数据,框架也是为了抓取数据,唯一有一定不同的就是,不管是我们现在所说的Scrapy框架还是其他的爬虫框架都是使爬虫功能模块话,把各种爬虫需求分开来,你只要使用你的项目所需要的模块就够了!
你还需要知道这么几条常用的命令

创建项目:scrapy startproject xxx进入项目:cd xxx #进入某个文件夹下创建爬虫:scrapy genspider xxx(爬虫名) xxx.com (爬取域)生成文件:scrapy crawl xxx -o xxx.json (生成某种类型的文件)运行爬虫:scrapy crawl XXX列出所有爬虫:scrapy list获得配置信息:scrapy settings [options]

那么我们现在来说说Scrapy框架的基本使用也是一样分为几部分

scrapy startproject tutorial

我们来看看Scrapy项目下都有些什么

scrapy.cfg: 项目的配置文件tutorial/: 该项目的python模块。在此放入代码(核心)tutorial/items.py: 项目中的item文件.(这是创建容器的地方,爬取的信息分别放到不同容器里)tutorial/pipelines.py: 项目中的pipelines文件.tutorial/settings.py: 项目的设置文件.(我用到的设置一下基础参数,比如加个文件头,设置一个编码)tutorial/spiders/: 放置spider代码的目录. (放爬虫的地方)

容器(items)的定义,容器不一定是一开始全部都定义好的,可以跟随项目的更新一点点向里面添加

import scrapyclass DmozItem(scrapy.Item): #创建一个类,继承scrapy.item类,就是继承人家写好的容器title = scrapy.Field() # 需要取哪些内容,就创建哪些容器link = scrapy.Field()desc = scrapy.Field()

一个简单的爬虫小例子

import scrapy
class DmozSpider(scrapy.Spider): # 继承Spider类name = "dmoz" # 爬虫的唯一标识,不能重复,启动爬虫的时候要用allowed_domains = ["dmoz.org"] # 限定域名,只爬取该域名下的网页start_urls = [ # 开始爬取的链接"https://www.baidu.com/"]def parse(self, response):filename = response.url.split("/")[-2] # 获取url,用”/”分段,获去倒数第二个字段with open(filename, 'a') as f:f.write(response.body) # 把访问的得到的网页源码写入文件
里面的parse方法,这个方法有两个作用
1.负责解析start_url下载的Response 对象,根据item提取数据(解析item数据的前提是parse里全部requests请求都被加入了爬取队列)
2.如果有新的url则加入爬取队列,负责进一步处理,URL的Request 对象
这两点简单来说就是编写爬虫的主要部分那么爬虫编写完,我们需要启动爬虫
cd XXX

进入到你的文件夹下
输入命令,启动爬虫

scrapy crawl dmoz

那么启动爬虫时发生了什么?
Scrapy为Spider的 start_urls 属性中的每个url创建了Request 对象,并将 parse 方法作为回调函数(callback)赋值给了requests,而requests对象经过调度器的调度,执行生成response对象并送回给parse() 方法进行解析,所以请求链接的改变是靠回调函数实现的。

yield scrapy.Request(self.url, callback=self.parse)

Scrapy框架的整体架构和组成


图中绿色的是数据的流向:
Spiders: 爬虫,定义了爬取的逻辑和网页内容的解析规则,主要负责解析响应并生成结果和新的请求
Engine: 引擎,处理整个系统的数据流处理,出发事物,框架的核心。
Scheduler: 调度器,接受引擎发过来的请求,并将其加入队列中,在引擎再次请求时将请求提供给引擎
Downloader: 下载器,下载网页内容,并将下载内容返回给spider
ItemPipeline: 项目管道,负责处理spider从网页中抽取的数据,主要是负责清洗,验证和向数据库中存储数据
Downloader Middlewares: 下载中间件,是处于Scrapy的Request和Requesponse之间的处理模块
Spider Middlewares: spider中间件,位于引擎和spider之间的框架,主要处理spider输入的响应和输出的结果及新的请求middlewares.py里实现


最后我们来顺一下scrapy框架的整体执行流程:

  1. spider的yeild将request发送给engine
  2. engine对request不做任何处理发送给scheduler
  3. scheduler,生成request交给engine
  4. engine拿到request,通过middleware发送给downloader
  5. downloader在\获取到response之后,又经过middleware发送给engine
  6. engine获取到response之后,返回给spider,spider的parse()方法对获取到的response进行处理,解析出items或者requests
  7. 将解析出来的items或者requests发送给engine
  8. engine获取到items或者requests,将items发送给ItemPipeline,将requests发送给scheduler(ps,只有调度器中不存在request时,程序才停止,及时请求失败scrapy也会重新进行请求)

Scrapy的中间件详解

Scrapy:安装介绍相关推荐

  1. Scrapy安装介绍

    Scrapy安装介绍 一. Scrapy简介 Scrapy is a fast high-level screen scraping and web crawling framework, used ...

  2. python2.7安装scrapy_python 2.7 的Scrapy安装介绍

    一. Scrapy简介 Scrapy is a fast high-level screen scraping and web crawling framework, used to crawl we ...

  3. Scrapy的安装介绍

    Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...

  4. scrapy安装_爬虫框架Scrapy简介与安装

    Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...

  5. linux下scrapy安装教程,linux centos7安装scrapy

    linux centos7安装scrapy 时间:2018-01-02 17:41作者:scrapy中文网阅读: 本scrapy中文教程主要介绍,centos7 linux下scrapy的安装,pyt ...

  6. python scrapy安装_Python安装Scrapy

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我们测试一下:# scrapy version-bash: scrapy: 未找 ...

  7. 小白进阶之Scrapy安装.使用.爬取顶点小说信息

    感谢原作者的文章 小白进阶之Scrapy第一篇 里面写的非常详细,但是转存数据库的时候,用的模块是mysql.connector.这个模块官网显示只支持到python3.5. 我用的则是pymysql ...

  8. 1. Scrapy 框架介绍

    1. Scrapy 框架介绍 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy = Scrach+Python S ...

  9. Scrapy安装在win7-32

    Scrapy安装在win7-32 Scrapy安装在win7-32 总结 经验谈 几个例子供进一步学习 总结 Scrapy之所以不是很多人在用,我想可能与其复杂的安装配置有关,这一点我深有感触.其实我 ...

最新文章

  1. HTC与酷派 不是冤家不聚头
  2. 操作系统--系统调用
  3. Java集合框架:HashMap
  4. 查看深信服上网管理版本号和登陆流程
  5. linux用户空间注册按键事件,linux下获取按键响应事件
  6. 第十九期:HTTPS虐我千百遍,我却待她如初恋!
  7. 上传大文件:在 System.Web.HttpRequest.GetEntireRawContent()
  8. 看从小自带BUFF的他,如何用代码降低万物互联的门槛
  9. 设为首页 加入收藏 html,[javascript]js设为首页和加入收藏夹代码
  10. spring.net结合普通三层(实现IOC 及AOP中的异常记录功能)
  11. 当一名程序员喝醉之后......
  12. STM32F103mini教程学习总结与心得(二)---->串口通信
  13. 《纽约邮报》手机客户端推送系统被黑 黑客发送抒情诗
  14. 03.搭建Spark集群(CentOS7+Spark2.1.1+Hadoop2.8.0)
  15. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_23-CMS前端页面查询开发-分页查询实现...
  16. 【Grasshopper基础1】怎样制作一个Grasshopper电池 / 二次开发基础
  17. 《论文阅读》PSF-LO: Parameterized Semantic Features Based Lidar Odometry
  18. iOS内购提示无效ID : .paymentInvalid
  19. android闹钟报告分析,Android AlarmClock 闹钟应用 简单分析
  20. Windows 10 运行python弹出windows应用商店

热门文章

  1. 如何彻底删除Visual Studio产品
  2. android基础面试题及答案,万字Android技术类校招面试题汇总
  3. 牛客 26E 珂学送分2 (状压dp)
  4. Xcode使用教程详细讲解 (下)
  5. 2022 ACM Fellow 名单公布!恭喜李航、邢波、俞栋等13位华人入选!
  6. 单隐层BP神经元个数对迭代步数和预测误差的影响
  7. 关于如何快速接手他人的代码
  8. PhotoSweeper for Mac v4.3.0 – 重复照片查找删除工具
  9. Hdu 5853 Jong Hyok and String
  10. FlowLayout(流式布局)的实现