scrapy 基础

1、  创建一个spider项目

a)         Scrapy startproject project_name [project_dir]

b)         Cd project 进入项目

2、  命令:

a)         Global commands:

i.              startproject 创建项目

ii.              genspider 创建一个爬虫

iii.              settings

iv.              runspider

v.              shell

vi.              fetch

vii.              view

viii.              version

b)         Project-only commands:

i.              crawl

ii.              check

iii.              list

iv.              edit

v.              parse

vi.              bench

3、  创造一个爬虫

$ scrapy genspider -l

Available templates:

Basic  默认

crawl

csvfeed

xmlfeed

a)         Scrapy genspider mydomain mydomain.com  ---》basic

b)         Scrapy genspider –t crawl mydomain mydomain.com

4、  运行spider

a)         Scrapy crawl myspider

理解一个scrapy:

Spider.py :

1、  start_url:是要爬取的第一个URL地址,可以有多个值

2、  parse(response):是request请求的结果,使用response.text()获取页面信息。

3、  response是一个‘scrapy.http.response.html.HtmlResponse’对象,可以使用xpath和css来提取数据。

4、  提取出来的数据是一个‘selector’或者‘selectorList’对象,可以使用get(),或者getall()来获取内容。

5、  Getall()是获取一个列表,get()是获取列表的第一个值

6、  如果数据解析出来,可以使用yield一个一个返回,也可以一次使用return返回多个。

7、  Item:建议使用item,数据结构化处理,数据更清晰。

8、  Pipline:用来处理item数据:

a)         Open_spider():再启动爬虫时执行,可以做一些预处理操作

b)         Process_item():处理spider.py传过来的数据可以保存、去重等操作。

c)         Close_spider():关闭爬虫时执行,坐一些善后操作。

注:要使用pipline,必须先在setting中激活pipline

Request 与  Response  请求与响应

Request:参数

1、  URL:request对象发送请求的URL

2、  Callback:请求之后的回调函数

3、  Method:默认Get,可以设置为其他方式,如果是post,建议使用formRequest

4、  Headers:请求头:对于一般固定的设置放在setting中,非固定的可以在发送请求的时候指定

5、  Meta:比较常用,用于在不同的请求之间使用传递使用

6、  Encoding:编码,默认是utf-8

7、  Dot_filter:表示不由调度器过滤,在使用多次重复请求的使用用的比较多,比如:验证码失败的时候

8、  Errback:在发生错误的时候执行的函数。

Response:对象属性,可以用来提取数据

1、  meta:从其他请求传过来的meta属性,可以用来保持多个请求之间的数据连接

2、  encoding:返回当前字符串编码和解码的格式

3、  text:将返回的数据作为Unicode字符串返回

4、  body:将返回的数据作为bytes字符串返回

5、  xpath:xpath选择器

6、  css:css选择器

POST请求:

1、重写‘start_requests’方法

以json的形式导出:pipline操作

1、使用JSonItemExporter 先是保存在列表中,最后在finish一次写入,占用内存。满足json格式

2、JsonLinerItemExporter、多次写入不是json格式,数据比较安全,防止发生意外

================crawlspider ====

需要使用“LinkExtrator”和“Rule”。这两个东西是(crawlspider)爬虫的主要内容。

1 、allow设置规则的方法:要能够限制在我们我们想要的URL上面,不要跟其他的URL产生相同的正则表达式即可。

2、使用Fallow的情况:如果在爬取页面的时候,需要将满足条件的URL连接进行跟进,那么就设置为True,否则设置为False。

3、callkack:如果这个URL对应的页面,只是为了获取更多的URL,并不需要里面的数据,那么可以不指定callkack。如果想要获取URL对应的页面的数据,那么就需要指定一个callback。

===========scrapy  shell  URL==========

1、可以方便我们做一些数据提取的测试代码。

2、如果想要执行scrapy命令,要先进入scrapy的环境中

3、如果想要读取某个项目的配置信息,那么应该先进入这个项目,在执行“scrapy shell URL”命令。

反 爬虫:

验证码:阿里云接口识别

File pipline文件下载管道

image pipline图片下载管道

下载器中间件:自定义 重写两个方法

1、process_request()

参数1:request 发送请求的request

参数2:spider 发送请求的spider

返回值:

1、  None: 如果返回none,scrapy继续执行该请求,执行其他的中间件的相应方法,直到合适的下载器函数被相应调用。

2、  Response: 如果返回response,那么scrapy将不会调用其他的process_request方法,将直接返回这个response对象,已经激活的中间件的process_response方法则会在每个response返回时调用

3、  Request :不再使用之前的request对象去下载数据,而是根据现在返回的request对象返回数据

4、  如果这个方法抛出异常,则会调用process_exception方法

2、process_response()

 参数:

1、  request:请求对象

2、  response:被处理的response对象

3、  spider:spider对象

返回值:

1、  response:会将这个新的response对象传递给其他中间件,最终给爬虫

2、  request:下载器链被切断,返回的request会重新被下载器调度下载

3、  异常:那么将调用request的errback方法,如果没有指定这个方法,那么会抛出异常

爬虫 scrapy 笔记的更多相关文章

  1. Scrapy笔记10- 动态配置爬虫

    Scrapy笔记10- 动态配置爬虫 有很多时候我们需要从多个网站爬取所需要的数据,比如我们想爬取多个网站的新闻,将其存储到数据库同一个表中.我们是不是要对每个网站都得去定义一个Spider类呢? 其 ...

  2. Python 爬虫个人笔记【目录】

    个人笔记,仅供参考 目录 Python爬虫笔记(一) Python 爬虫笔记(二) Python 爬虫笔记(三) Scrapy 笔记(一) Scrapy 笔记(二) Scrapy 笔记(三) Pyth ...

  3. 转 Scrapy笔记(5)- Item详解

    Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便. Item提供了类字典的API,并且可以很方便的声明字段,很多Scra ...

  4. Scrapy笔记(1)- 入门篇

    Scrapy笔记01- 入门篇 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说, ...

  5. Scrapy笔记02- 完整示例

    Scrapy笔记02- 完整示例 这篇文章我们通过一个比较完整的例子来教你使用Scrapy,我选择爬取虎嗅网首页的新闻列表. 这里我们将完成如下几个步骤: 创建一个新的Scrapy工程 定义你所需要要 ...

  6. Scrapy笔记03- Spider详解

    Scrapy笔记03- Spider详解 Spider是爬虫框架的核心,爬取流程如下: 先初始化请求URL列表,并指定下载后处理response的回调函数.初次请求URL通过start_urls指定, ...

  7. Scrapy笔记05- Item详解

    Scrapy笔记05- Item详解 Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便. Item提供了类字典的API, ...

  8. Scrapy笔记06- Item Pipeline

    Scrapy笔记06- Item Pipeline 当一个item被蜘蛛爬取到之后会被发送给Item Pipeline,然后多个组件按照顺序处理这个item. 每个Item Pipeline组件其实就 ...

  9. Scrapy笔记07- 内置服务

    Scrapy笔记07- 内置服务 Scrapy使用Python内置的的日志系统来记录事件日志. 日志配置 LOG_ENABLED = true LOG_ENCODING = "utf-8&q ...

随机推荐

  1. apk文件md5校验之用好压对下载服务器测试[测试篇]

    往往稍微有点规模的公司,都会有一个独立下载服务器,那么,我还是简单说一下下载服务器的原理吧,首先后台上传文件或软件,然后web服务器通过定时脚本检测,如有变化,则将文件同步出去到下载服务器,源站数据库 ...

  2. Java 中的伪共享详解及解决方案

    1. 什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的.目前主流的 CPU Cache 的 Cache Line 大小都是 64 Bytes.在多线程情况下,如果需要修改 ...

  3. LeetCode手记-Add Binary

    问题描述 问题分析 分析题意,此题实际是求解两个二进制数的和,但是有两点要注意: 1.字符串的长度不限,所以相应十进制数值很可能会超过int的上限. 2.二进制的加法规则是自右向左进位,需要注意,以题 ...

  4. ffmpeg 视频实现各种特效

    直接上命令: //渐入i in.mp4 -vf fade=in:0:90 out.mp4                 //黑白                    i in.mp4 -vf lu ...

  5. Ubantu 16.04升级内核版本和还原到升级之前的内核版本的方法

    一.查看系统信息 1.查看发布版本: 命令: lsb_release -a 运行结果: / 2.查看内核版本: 命令: uname -sr 运行结果: 二.升级内核的方法 1.内核下载地址:http: ...

  6. oracle新建用户并授权步凑

    #首先创建表空间.存放路径.设置表空间大小 create tablespace tbs_ams datafile '+DATA/pdorcl1/datafile/ams1.dbf' size 1024 ...

  7. Spring Cloud OAuth2.0 微服务中配置 Jwt Token 签名/验证

    关于 Jwt Token 的签名与安全性前面已经做了几篇介绍,在 IdentityServer4 中定义了 Jwt Token 与 Reference Token 两种验证方式(https://www ...

  8. CentOS 安装 kafka

    首先确保JDK已正确安装并设置好环境变量 安装Zookeeper 到官网下载: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ zooke ...

  9. C语言第六讲,数组

    C语言第六讲,数组 一丶什么是数组 数组,就是一整块的连续内存空间. 且类型都是一样的.大小一样 比如: 1.1数组元素的访问 我们要访问数组,例如上面,我们访问元算2,元素3等等怎么访问.. 比如有 ...

  10. MySQL 事务机制

    事务处理是保证数据安全的重要机制,事务有四个重要属性 ,根据它们的英文名称可以记为ACID: 原子性(Atomic): 事务操作是不可分割的; 事务只存在已执行和未执行两种状态,不存在只执行了部分指令 ...