Scrapy框架

      Scrapy是一个高级的爬虫框架,它不仅包括了爬虫的特征,还可以方便地将爬虫数据保存到CSV、Json等文件中。
      Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
      Scrapy 使用了 Twisted异步网络库来处理网络通讯。
      整体架构大致如下:

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

Scrapy运行流程

Scrapy运行流程大概如下:

1)引擎从调度器中取出一个链接(URL)用于接下来的抓取;

2)引擎把URL封装成一个请求(Request)传给下载器;

3)下载器把资源下载下来,并封装成应答包(Response);

4)爬虫解析Response;

5)解析出实体(Item),则交给实体管道进行进一步的处理;

6)解析出的是链接(URL),则把URL交给调度器等待抓取。

Scrapy的安装

首先在cmd命令行中安装Scrapy

pip install scrapy

在Windows安装是可能会出现错误,提示找不到Microsoft Visual C++,需要安装Twisted 。

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
  在下载Twisted之前,先要确认你Python的版本,比如我的版本为Python3.6.5,就选择cp36的;电脑
  系统是64位,就选择win amd64的。

Twisted的安装:

pip install E:\Downloads\Twisted-18.4.0-cp36-cp36m-win_amd64.whl

最后再安装Scrapy。

Scrapy常用命令

Scarpy常用命令
命令 说明 格式
startproject 创建一个新工程 Scrapy startproject 项目名
genspider 创建一个爬虫 Scrapy genspider 项目名 域名
settings 获取爬虫配置信息 Scrapy settings 
crawl 运行一个爬虫 Scrapy crawl 项目名
list 列出工程所有爬虫 Scrapy list
shell 启动URL调试命令行 Scrapy shell [url]
edit 编辑爬虫文件 Scrapy edit 文件名

注意:一般创建爬虫文件时,以网站域名命名

项目创建

项目创建步骤:

       步骤1:建立一个Scrapy爬虫工程
             选取一个目录(E:\PyCodes\),然后执行如下命令:
E:\PyCodes\scrapy startproject myproject
      步骤2:在工程中产生一个Scrapy爬虫
             进入工程目录(E:\PyCodes\myproject),然后执行如下命令:
E:\PyCodes\myproject\scrapy genspider mydome mydome.com

      步骤3:配置产生的spider爬虫

            (1)初始URL地址
            (2)获取页面后的解析方式
# -*- coding:utf-8 -*-
import scrapy class MydemoSpider(scrapy.Spider):
name = "mydemo"
allowd_domains = ["http://mydome.com"]
start_url = ['http://python123.io/ws/dome.html'] def parse(self, response):
pass
      步骤4:运行爬虫,获取网页
             mydemo爬虫被执行,捕获页面存储在mydemo.html
             在命令行下,执行如下命令:
E:\PyCodes\myproject\scrapy crawl mydome

生成的项目结构:

myproject/                 -------外层目录
scrapy.cfg -------项目的配置文件
myproject/ -------该项目的python模块。之后您将在此加入代码。
__init__.py -------初始化脚本
items.py -------item代码模块(继承类)
middlewares.py -------Middlewares代码模板(继承类)
pipelines.py -------Pipelines代码模板(继承类)
settings.py -------Scrapy爬虫的配置文件 spiders/ -------Spiders代码模板目录(继承类)
__init__.py -------初始文件,无需修改
__init__.py -------缓存目录,无需修改

Python网咯爬虫 — Scrapy框架应用的更多相关文章

  1. python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

    操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...

  2. 爬虫scrapy框架之CrawlSpider

    爬虫scrapy框架之CrawlSpider   引入 提问:如果想要通过爬虫程序去爬取全站数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模 ...

  3. 安装爬虫 scrapy 框架前提条件

    安装爬虫 scrapy 框架前提条件 (不然 会 报错) pip install pypiwin32

  4. 爬虫Ⅱ:scrapy框架

    爬虫Ⅱ:scrapy框架 step5: Scrapy框架初识 Scrapy框架的使用 pySpider 什么是框架: 就是一个具有很强通用性且集成了很多功能的项目模板(可以被应用在各种需求中) scr ...

  5. Python爬虫 ---scrapy框架初探及实战

    目录 Scrapy框架安装 操作环境介绍 安装scrapy框架(linux系统下) 检测安装是否成功 Scrapy框架爬取原理 Scrapy框架的主体结构分为五个部分: 它还有两个可以自定义下载功能的 ...

  6. python爬虫scrapy框架

    Scrapy 框架 关注公众号"轻松学编程"了解更多. 一.简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量 ...

  7. Python爬虫Scrapy框架入门(2)

    本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写 ...

  8. Python爬虫Scrapy框架入门(1)

    也许是很少接触python的原因,我觉得是Scrapy框架和以往Java框架很不一样:它真的是个框架. 从表层来看,与Java框架引入jar包.配置xml或.property文件不同,Scrapy的模 ...

  9. python学习之-用scrapy框架来创建爬虫(spider)

    scrapy简单说明 scrapy 为一个框架 框架和第三方库的区别: 库可以直接拿来就用, 框架是用来运行,自动帮助开发人员做很多的事,我们只需要填写逻辑就好 命令: 创建一个 项目 : cd 到需 ...

随机推荐

  1. Python文件处理(txt、csv文件读取)

    打开文件 使用Python内置的方法 open()可以打开文件 file object = open(file_name [, access_mode][, buffering]) file_name ...

  2. ElasticSearch全文搜索引擎(A)

    文章:[Elasticsearch] 全文搜索 (一) - 基础概念和match查询 全文检索,是从最初的字符串匹配和简单的布尔逻辑检索技术,演进到能对超大文本.语音.图像.活动影像等非结构化数据进行 ...

  3. NYOJ-476谁是英雄,分解质因子求约数个数!

    谁是英雄 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 十个数学家(编号0-9)乘气球飞行在太平洋上空.当横越赤道时,他们决定庆祝一下这一壮举.于是他们开了一瓶香槟.不 ...

  4. 前端开发:JavaScript---ECMAScript

    JavaScript:JavaScript是一种web前端的描述语言,也是一种基于对象(object)和事件驱动(Event Driven)的脚本语言.它运行在客户端从而减轻服务器的负担. js是一种 ...

  5. [NOIP2005] 提高组 洛谷P1051 谁拿了最多奖学金

    题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1 ...

  6. msp430入门编程00

    msp430单片机最小系统 msp430入门学习 msp430入门编程

  7. mysql设置datetime默认值为now

    mysql设置datetime默认值为now MYSQL-TIMESTAMP数据类型的默认值与自动更新问题 http://blog.csdn.net/scogeek/article/details/5 ...

  8. [Java Sprint] Spring XML Configuration : Constructor Injection Demo

    Previous we see how to do Setter injection: https://www.cnblogs.com/Answer1215/p/9472117.html Now le ...

  9. Num 15: NYOJ: 题目0002 : 括号配对问题 [ 栈(stack) ]

    原题连接      首先要了解有关栈的一些基本知识,即:      什么是栈,栈有什么作用:        1.什么是栈: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...

  10. SpringMVC之请求参数的获取方式

    转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...