scrapy框架
- Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。
- 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。
- Scrapy 使用了 Twisted(其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。
scrapy架构图(绿线为数据流通方向)
各个模块的简单介绍
scrapy框架的安装
环境为Ubuntu和mac
pip3 install —upgrade pip
sudo pip3 install scrapy
scrapy的应用
创建项目
scrapy startproject 爬虫名
项目结构如下
创建爬虫
scrapy genspider 爬虫名 爬取范围域名
例如
scrapy genspider zhihu zhihu.com
完善爬虫
- start_url地址对应的响应交给parse函数处理,parse函数名不能修改
- 提取数据,response.xpath结果是包含selector对象的列表
- extract 把列表中的selector对象转化为字符串, 如果没有则为空列表
- extract_first()获取列表中第一个数据转化为字符串,没有就是none值
- yield 把数据传递给管道
管道的注意点
- 管道的使用需要在settings中开启
- 键是管道的位置
- 管道距离引擎的远近,越小越近,数据越先经过
log的使用
在settings中设置log的级别,添加一行(大写):
LOG_LEVEL="WARNING"
,默认终端显示的是debug级别的log信息log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG 。
LOG_FILE 是日志保存的位置,设置之后终端不会有日志输出
LOG_FILE='./a.log' # 设置日志保存的位置,设置后,后端不会显示日志内容
普通项目中使用log
import logging logging.basicConfig() # 设置日志输出的样式 格式