scrapy 框架

scrapy 框架

  1.  什么是scrapy框架:
    1. Scrapy,python开发的一个快速,高层次的屏幕抓取web抓取框架,用于抓取web站点并从页面从页面提取结构化的的数据
  2.  特点:
    1. Scrapy用途广泛,可以用于数据挖掘,检测,自动化测
  3. scrapy框架的优势:
    1. Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改,它提供了多种类型爬虫的基类,如BaseSpider,sitemap爬虫等,最新版本又提供了对web2.0爬虫的支持
  4. Scrapy整体框架

scrapy 框架_第1张图片

5.Scrapy主要包括了以下组件:

  1.  引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心)    
  2.  调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可 以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决 定下一个要抓取的网址是什么, 同时去除重复的网址 
  3.  下载器(Downloader) 用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted 这个高效的异步模型上的) 
  4. 爬虫(Spiders) 爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实 体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
  5.  项目管道(Pipeline) 负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的 有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道, 并经过几个特定的次序处理数据。 
  6. 下载器中间件(Downloader Middlewares) 位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的 请求及响应。 
  7.  爬虫中间件(Spider Middlewares) 介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求 输出。
  8.  调度中间件(Scheduler Middewares) 介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应 

 

6.Scrapy运行流程大概如下:

  1.  引擎从调度器中取出一个链接(URL)用于接下来的抓取
  2. 引擎把URL封装成一个请求(Request)传给下载
  3. 下载器把资源下载下来,并封装成应答包(Response)
  4. 爬虫解析Respons
  5. 解析出实体(Item),则交给实体管道进行进一步的处理
  6. 解析出的是链接(URL),则把URL交给调度器等待抓

 7.Scrapy的安装

  1. 第一步安装lxml  利用pip install lxmllxml是个非常有用的python库,它可以灵活高效地解析xml,与 BeautifulSoup、requests结合,是编写爬虫的标准姿势。
  2. 第二步安装zope.interface      pip install zope.interface Python支持多继承,但是不支持接口,zope.inteface是其三方的接口实现 库,在twisted中有大量使用
  3. 第三步安装twisted     pip install twisted 
  4. 第四步安装pyOpenSSL     pip install pyOpenSSL
  5. )第五步安装pywin32      pip install pywin32 出错 pywin32是一个Python库,为python提供访问Windows API的扩展,提供了 齐全的windows常量、接口、线程以及COM机制等等 下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/ 下载后双击安装
    若之后仍显示cannot import name '_win32stdio‘ 则cmd中运行pip install pypiwin32 
  6. 安装Scrapy       pip install scrapy

8.创建项目

  1. scrapy 不同于简单的单线程爬虫,采用scrapy 框架写python爬虫需要生成许多个文件,这一件类似于java里面的 web框架,许多工作都可以通过一些配置文件来完成。win+r 输入cmd命令  在执行以下命令
    命令:scrapy startproject 项目文件名,   创建成功则出现以下显示

9.项目的目录介绍

scrapy 框架_第2张图片

 

  1. scrapy.cfg:项目配置文件
  2. sss:项目的python模块,将会从这里引用代码
  3. sss/items:项目items文件,用来存放抓取内容容器的文件
  4. sss/piplines.py::负责处理爬虫从网 页中抽取的实体,持久化实体、验证实体的有效 性、清除不需要的信息 
  5. sss/settings.py:项目的设置文件
  6. sss/spiders/:存储爬虫的目录

 

10.实施爬虫

 

  1. 定义Item        Item 是用来保存爬取到的数据的容器,创建一个 scrapy.Item 类, 并且定 义类型为 scrapy.Field 的类属性来定义一个Item。将需要爬取的内容与Field()定 义的属性对应。 scrapy 框架_第3张图片
  2. title:伯乐标题   p :详情

 

11.爬虫(spider)

  • 编写第一个爬虫(Spider) 创建一个继承 scrapy.Spider 的子类Douban,且定义以下三个属性:
  • (1)name: 用于区别Spider。 该名字必须是唯一的---》 "douban"
  • (2)start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的 页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
    ---》['http://movie.douban.com/top250']
  • (3)parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据 (response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象 

 

11.编写第一个爬虫

scrapy 框架_第4张图片

 

数据持久化:

scrapy 框架_第5张图片

你可能感兴趣的:(python,爬虫Scrapy)