前言

最近在学Scrapy,所以边学边总结吧

Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架

速度很快,使用起来不算麻烦

01-Scrapy框架的安装

可以直接pip 安装

pip/pip3 install scrapy

但是一般网络情况不好的情况下会安装失败,也可以安装.whl本地安装,这个网上教程很多,这里不做赘述

02-Scrapy框架的运行流程

我们之前的爬虫差不多都是这个流程

mark

scrapy和上面的流程差不多

但是将一些操作抽象了出来,如下图

mark

流程描述如下

  1. 爬虫中起始的url构造成request对象–>爬虫中间件–>引擎–>调度器
  2. 调度器把request–>引擎–>下载中间件—>下载器
  3. 下载器发送请求,获取response响应---->下载中间件---->引擎—>爬虫中间件—>爬虫
  4. 爬虫提取url地址,组装成request对象---->爬虫中间件—>引擎—>调度器,重复步骤2
  5. 爬虫提取数据—>引擎—>管道处理和保存数据

scrapy各个模块的作用

mark

03-Scrapy的使用

当我们安装好scrapy框架后,我们需要手动创建scrapy项目

使用基本流程为

  1. 创建项目 scrapy startproject 项目名
  2. 创建爬虫:scrapy genspider xxx(爬虫名) xxx.com (爬取域)
  3. 运行爬虫:scrapy crawl XXX

这3步就是最基本的使用流程

而在第一步生成的scrapy的项目目录大致如下,这里创建的项目名为demo

mark

这里大致说一下每个文件是干什么的

middlewares.py是自定义中间件的文件

pipelines.py是管道文件,负责保存数据

settings.py是设置文件,负责UA,启动管道

spiders.py是自定义spider的文件夹,我们生成的爬虫文件会出现在这个文件夹中

items.py是定义我们预计要爬取的内容

如果我们创建爬虫的话,这个目录会是这样的

项目目录>scrapy genspider test baidu.com

mark

我们能够发现spider中多了一个test.py文件

而test.py文件中是这样的

mark

我们需要在start_url中写入我们想要爬取的网页url,而且保证该网页是你自己定义域名内的网页,不然无法爬取

我们这里以百度为例,爬取百度的标题修改parse函数

修改完test.py应该是这样的

mark

运行:scrapy crawl test

运行结果(部分)如下

mark

注:extract()是返回一个包含有字符串的列表

还有另外一个extract_first() 返回列表中的第一个字符串,列表为空没有返回None

我们一般更加需要爬取的数据来选择使用那个方法

如果觉得日志打印太多的话,我们可以在运行命令后加 --nolog来选择不打印log

例如这样:

mark

这样我们的百度标题就爬取完毕了

本文就到这里,后续本人学习到了,会继续更新的 GOOD LUCK