Scrapy爬虫框架中的两个流程
下面对比了Scrapy爬虫框架中的两个流程——
① Scrapy框架的基本运作流程;② Spider或其子类的几个方法的执行流程。
这两个流程是互相联系的,可对比学习。
1 ● Scrapy框架的基本运作流程
|
① Scrapy引擎从调度器(Scheduler)中获取一个链接(URL) ② Scrapy引擎将上述的URL封装成一个请求对象(Request),并传给下载器(Downloader) ③下载器(Downloader)把资源下载下来,并封装成响应对象(Response) ④ Scrapy引擎从下载器中接收Response对象, 并通过爬虫中间件(Spider Middleware)发送给Spider解析 (Response对象默认交给Spider或其子类的parse方法解析) ⑤如果Response对象解析出实体(Item),则将Item传给实体管道(Item Pipeline)进行持久化等进一步的处理;如果解析出Request对象, 那么将Request对象传给调度器(Scheduler)等待抓取 |
2 ● Spider或其子类的几个方法的执行流程
|
① __init__():初始化爬虫名字和start_urls列表 ② start_requests() :该方法会调用make_requests_from url(),生成Requests对象,将该对象交给Scrapy引擎的Downloader下载并返回Response对象 ③ parse() : 根据指定的回调函数解析上述的Response对象,并返回Item对象或Request对象,Item传给Item Pipeline进行持久化等进一步的处理,而Request对象传给调度器(Scheduler)等待下载,下载完后由指定的回调函数处理(默认为parse()),一直进行循环,直到处理完所有的数据为止。 |
|
※ Spider的子类CrawlSpider用于全站爬取,当编写爬虫规则(即Rule对象)时,应该避免使用parse作为回调函数,这是因为CrawlSpider使用parse方法来实现其逻辑,如果覆盖了 parse方法,crawl spider将会运行失败。 |
Scrapy爬虫框架中的两个流程的更多相关文章
- Scrapy(爬虫框架)中,Spider类中parse()方法的工作机制
parse(self,response):当请求url返回网页没有指定回调函数,默认的Request对象的回调函数,用来处理网页返回的response,和生成的Item或者Request对象 以下分析 ...
- 第十七节:Scrapy爬虫框架之item.py文件以及spider中使用item
Scrapy原理图: item位于原理图的最左边 item.py文件是报存爬取数据的容器,他使用的方法和字典很相似,但是相比字典item多了额外的保护机制,可以避免拼写错误或者定义错误. 1.创建it ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250
scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...
- Scrapy 爬虫框架学习笔记(未完,持续更新)
Scrapy 爬虫框架 Scrapy 是一个用 Python 写的 Crawler Framework .它使用 Twisted 这个异步网络库来处理网络通信. Scrapy 框架的主要架构 根据它官 ...
- Python之Scrapy爬虫框架安装及简单使用
题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...
- Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
(1).前言 动态页面:HTML文档中的部分是由客户端运行JS脚本生成的,即服务器生成部分HTML文档内容,其余的再由客户端生成 静态页面:整个HTML文档是在服务器端生成的,即服务器生成好了,再发送 ...
- Python爬虫教程-31-创建 Scrapy 爬虫框架项目
本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细 Python爬虫教程-31-创建 Scrapy 爬虫框架项目 首先说一下,本篇是在 Anaconda 环 ...
- Python-S9-Day126——Scrapy爬虫框架
01 今日内容概要 02 内容回顾和补充:scrapy 03 内容回顾和补充:网络和并发编程 04 Scrapy爬虫框架:pipeline做持久化(一) 05 Scrapy爬虫框架:pipeline做 ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影
前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大家讲解一个完整爬虫的流程. 工具和环境 语言:python 2 ...
随机推荐
- 蓝桥杯2018 B组 第九题
#include <bits/stdc++.h> #define M 1005 using namespace std; int n; char map1[M][M]; bool vis[ ...
- PHP提交表单失败后如何保留填写的信息
index.html模板文件大内容: <html> <head> <title>jQuery Ajax 实例演示</title> </head&g ...
- uva12545
#include<iostream> using namespace std; +; char s[maxn],t[maxn]; int main(){ //freopen("1 ...
- Kubernetes持久化存储1——示例
目录贴:Kubernetes学习系列 一.简介 存储管理与计算管理是两个不同的问题.Persistent Volume子系统,对存储的供应和使用做了抽象,以API形式提供给管理员和用户使用.要完成这一 ...
- 大话npm,cnpm和yarn
npm:基于node.js的包管理工具; 常用命令 npm install 包名; 缺点:因服务器在国外,所以下载包的速度超级慢,所以出现了cnpm和yarn cnpm:跟npm是一样的,这是淘宝出的 ...
- sqlserver with(nolock)
所有Select加 With (NoLock)解决阻塞死锁 在查询语句中使用 NOLOCK 和 READPAST 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAS ...
- 使用solr进行配置文件
我现在使用的是一个已经搭建好的solr环境下进行的测试: 第一步,需要配置solrhome中的一个配置文件schema.xml 配置内容如下,上面配置的是IK分词器,下面是配置完成的域. 因为我在这个 ...
- Solr和Lucene的区别?
1.Lucene 是工具包 是jar包 2.Solr是索引引擎服务 War 3.Solr是基于Lucene(底层是由Lucene写的) 4.上面二个软件都是Apache公司由java写的 5.Luc ...
- GDB in Action
GDB in Action 入门 编译 gcc -g -O0 -o word2vec.c word2vec -g 选项:要求 gcc 编译器保留调试符号信息. -O0 选项表示不优化,从 O1 ~ O ...
- centos7救援模式--rescue模式
前序 经典问题:系统无法进入,如grub损坏或某个配置文件改错 操作 1 按方向键到Boot,选到Hard Driver,按减号,使其下移,最终让CD-ROM Drive到第一行,并按F10保存 2 ...