scrapy框架基础(一)
前言
最近在学Scrapy,所以边学边总结吧
Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架
速度很快,使用起来不算麻烦
01-Scrapy框架的安装
可以直接pip 安装
pip/pip3 install scrapy |
但是一般网络情况不好的情况下会安装失败,也可以安装.whl本地安装,这个网上教程很多,这里不做赘述
02-Scrapy框架的运行流程
我们之前的爬虫差不多都是这个流程
scrapy和上面的流程差不多
但是将一些操作抽象了出来,如下图
流程描述如下
- 爬虫中起始的url构造成request对象–>爬虫中间件–>引擎–>调度器
- 调度器把request–>引擎–>下载中间件—>下载器
- 下载器发送请求,获取response响应---->下载中间件---->引擎—>爬虫中间件—>爬虫
- 爬虫提取url地址,组装成request对象---->爬虫中间件—>引擎—>调度器,重复步骤2
- 爬虫提取数据—>引擎—>管道处理和保存数据
scrapy各个模块的作用
03-Scrapy的使用
当我们安装好scrapy框架后,我们需要手动创建scrapy项目
使用基本流程为
- 创建项目 scrapy startproject 项目名
- 创建爬虫:scrapy genspider xxx(爬虫名) xxx.com (爬取域)
- 运行爬虫:scrapy crawl XXX
这3步就是最基本的使用流程
而在第一步生成的scrapy的项目目录大致如下,这里创建的项目名为demo
这里大致说一下每个文件是干什么的
middlewares.py是自定义中间件的文件
pipelines.py是管道文件,负责保存数据
settings.py是设置文件,负责UA,启动管道
spiders.py是自定义spider的文件夹,我们生成的爬虫文件会出现在这个文件夹中
items.py是定义我们预计要爬取的内容
如果我们创建爬虫的话,这个目录会是这样的
项目目录>scrapy genspider test baidu.com |
我们能够发现spider中多了一个test.py文件
而test.py文件中是这样的
我们需要在start_url中写入我们想要爬取的网页url,而且保证该网页是你自己定义域名内的网页,不然无法爬取
我们这里以百度为例,爬取百度的标题修改parse函数
修改完test.py应该是这样的
运行:scrapy crawl test
运行结果(部分)如下
注:extract()是返回一个包含有字符串的列表
还有另外一个extract_first() 返回列表中的第一个字符串,列表为空没有返回None
我们一般更加需要爬取的数据来选择使用那个方法
如果觉得日志打印太多的话,我们可以在运行命令后加 --nolog来选择不打印log
例如这样:
这样我们的百度标题就爬取完毕了
本文就到这里,后续本人学习到了,会继续更新的 GOOD LUCK