1.scrapy的概念及流程
- scrapy是一个Python编写的开源网络爬虫框架,它是一个被设计用于爬取网络数据,提取结构性数据的框架
- scrapy 使用了Twisted异步网络框架,可以加快下载速度
- scrapy文档
2.scrapy框架的作用-少量的代码,快速的爬取
3.scrapy的工作流程
- 爬虫流程
- 资源定位 url
- 发起请求,获取响应 response
- 解析数据 lxml json bs4
- 保存数据
- 上述流程改写:
- scrapy流程
绿线表示数据流 所有的模块相互独立,置于引擎交互
- scarpy的三个内置对象
- request请求对象:由 url method post_data headers等构成
- response响应对象:由url body status headers 等构成
- item数据对象:本质是字典
- scrapy每个模块的作用:
"""
1.scrapy初识
创建项目 scrapy startproject 项目名称
生成一个爬虫 scrapy genspider 爬虫名 允许爬取的域名
运行框架:scrapy crawl 爬虫名
1.资源定位,发起请求(爬虫文件spider)
2.清洗,提取数据(爬虫文件spider)
3.定义数据模板item,并传数据到管道(items文件)
4.管道保存数据(管道文件pipline)
2.项目结构文件认识:
items:保存数据定义文件
middlewares:自定义中间件文件
pipelines :管道,保存数据
settings:设置文件,可开启管道等
spider:爬虫文件,资源定位,发起请求获取响应,清洗提取数据,
接受下载中间件传过来的response,就是响应数据
#注意:类中必须有parser的解析
#若提取的url要再次发起请求,需属于允许域名范围,起始url不用遵守
#启动爬虫是在项目路径下启动的
#解析函数parser中yield传递的对象只能是:BaseItem,Request,dict,None
提取数据:
response.xpath()返回的是一个 类似 列表的类型,其中包含selector对象,操作和列表一些额外的方法
extract额外方法():返回的是一个包含有字符串的列表
extract_first():返回列表中的第一个字符串,列表为空返回None
get():得到第一条数据
getall():取出所有数据,以列表形式展现
复习response常用:
response.url:当前响应的url
response.request.url:当前响应对应的请求的url地址
response.headers:响应头
response.request.headers:当前响应的请求头
response.body:响应体,也就是html代码,byte类型
response.status:响应状态码
保存数据(利用pipeline管道)
可定义一个管道类,重写process_item(中编写保存逻辑)方法
process_item方法处理完item之后必须返回给引擎 即return item
重定义的管道类,要在配置文件settings中,启用并配置管道
配置项中的键:项目目录.文件.定义的管道类
配置项中的值:为使用管道的顺序,值越小越优先执行,一般在1000以内
1.scrapy组成部分:
1.引擎:负责总体的是调度--大脑
2.调度器(scheduler)
接收引擎发送过来的request对象
弹出request对象,交给引擎
3.下载器(downloader)
接收引擎发送过来的request对象
发送请求,获取响应,把响应给引擎
4.爬虫组件(spiders)
接收引擎传递过来的response,解析response
提取出来的数据交给引擎
提取url,构造Requests请求,交给引擎
5.管道(pipeline)
保存数据
"""
|