前言 Scrapy开门篇写了一些纯理论知识,这第二篇就要直奔主题了.先来讲讲Scrapy的架构,并从零开始开发一个Scrapy爬虫程序. 本篇文章主要阐述Scrapy架构,理清开发流程,掌握基本操作. 整体架构 自己动手画架构图一张: 这就是Scrapy的整体架构,看起来流程比较复杂,但其实需要开发者参与的部分不多.这里先介绍一下各个部分. Spider:要开发的爬虫程序,用来定义网站入口,实现解析逻辑并发起请求. Pipeline:数据管道,可自定义实现数据持久化方式. Middleware:…
前言 MiddleWare,顾名思义,中间件.主要处理请求(例如添加代理IP.添加请求头等)和处理响应 本篇文章主要讲述下载器中间件的概念,以及如何使用中间件和自定义中间件. MiddleWare分类 依旧是那张熟悉的架构图. 从图中看,中间件主要分为两类: Downloader MiddleWare:下载器中间件 Spider MiddleWare:Spider中间件 本篇文主要介绍下载器中间件,先看官方的定义: 下载器中间件是介于Scrapy的request/response处理的钩子框架.…
前言 写一写Spider中间件吧,都凌晨了,一点都不想写,主要是也没啥用...哦不,是平时用得少.因为工作上的事情,已经拖更好久了,这次就趁着半夜写一篇. Scrapy-deltafetch插件是在Spider中间件实现的去重逻辑,开发过程中个人用的还是比较少一些的. 作用 依旧是那张熟悉的架构图,不出意外,这张图是最后一次出现在Scrapy系列文章中了. 如架构图所示,Spider中间件位于Spiders(程序)和engine之间,在Item即将拥抱Pipeline之前,对Item和Respo…
前言 Scrapy is coming!! 在写了七篇爬虫基础文章之后,终于写到心心念念的Scrapy了.Scrapy开启了爬虫2.0的时代,让爬虫以一种崭新的形式呈现在开发者面前. 在18年实习的时候开始接触Scrapy,花了一个月的时间,理论结合实践学习了Scrapy.本篇文章不写代码操作,只讲前因后果及理论,愿你懂得Scrapy. 原生爬虫面临问题 无论使用Java的Jsoup也好,python的requests也罢,开发爬虫都会面临下面几个问题: 1.分布式 爬虫程序一般只运行在一台主机…
前言 代码未动,配置先行.本篇文章主要讲述一下Scrapy中的配置文件settings.py的参数含义,以及如何去获取一个爬虫程序的运行性能指标. 这篇文章无聊的一匹,没有代码,都是配置化的东西,但是呢不学还不行,属于Scrapy的枢纽,很关键.所以还请各位看官老爷耐得住这一章的寂寞. settings.py 在我们创建一个Scrapy项目的时候,就会在项目下生成四个py文件,其中就有一个settings.py.其中大大小小配置也是有大几十个,这里只讲一些比较常见的,其他的还请移步官方文档. 官…
前言 "又回到最初的起点,呆呆地站在镜子前". 本来这篇是打算写Spider中间件的,但是因为这一块涉及到Item,所以这篇文章先将Item讲完,顺便再讲讲Pipeline,然后再讲Spider中间件. Item和Pipeline 依旧是先上架构图. 从架构图中可以看出,当下载器从网站获取了网页响应内容,通过引擎又返回到了Spider程序中.我们在程序中将响应内容通过css或者xpath规则进行解析,然后构造成Item对象. 而Item和响应内容在传递到引擎的过程中,会被Spider中…
本文目标 理解什么是常量,什么是变量 认识八大基本数据类型 了解算数运算符.赋值运算符.关系运算符.逻辑运算符.位运算符.三元运算符 1.什么是常量与变量? 常量是相对静止的量,比如整数:1,2,3 字符:‘a’,‘b‘ 字符串:“Halloworld” 变量是可以改变的量,比如:   x = 13://给x赋值13, x = 14 ://给x赋值14 此时x的值可以人为地改变,所以可以称x为一个变量 2.八大基本数据类型 整数: 字节型 byte  //用来存储字节(整数),占1个字节(-12…
php从入门到放弃系列-02.php基础语法 一.学习语法,从hello world开始 PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言. <!DOCTYPE html> <html> <body> <?php echo "hello world!";//输出 ?> </body> </html> php是一种服务端脚本语…
前言 上一篇文章讲了爬虫的概念,本篇文章主要来讲述一下如何来解析爬虫请求的网页内容. 一个简单的爬虫程序主要分为两个部分,请求部分和解析部分.请求部分基本一行代码就可以搞定,所以主要来讲述一下解析部分.对于解析,最常用的就是xpath和css选择器,偶尔也会使用正则表达式. 不论是xpah还是css,都是通过html元素或者其中某些属性来选中符合条件的元素节点. 以斗罗大陆的部分html为例. <div class="detail_video"> <div class…
这篇文章主要是对的scrapy命令行使用的一个介绍 创建爬虫项目 scrapy startproject 项目名例子如下: localhost:spider zhaofan$ scrapy startproject test1 New Scrapy project 'test1', using template directory '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/scra…