scrapy介绍及使用
scrapy的流程
其流程可以描述如下:
- 调度器把requests-->引擎-->下载中间件--->下载器
- 下载器发送请求,获取响应---->下载中间件---->引擎--->爬虫中间件--->爬虫
- 爬虫提取url地址,组装成request对象---->爬虫中间件--->引擎--->调度器
- 爬虫提取数据--->引擎--->管道
- 管道进行数据的处理和保存
注意:
- 图中绿色线条的表示数据的传递
- 注意图中中间件的位置,决定了其作用
- 注意其中引擎的位置,所有的模块之前相互独立,只和引擎进行交互
scrapy中每个模块的具体作用
1.scrapy项目实现流程
创建一个scrapy项目:
scrapy startproject 项目名
生成一个爬虫:
scrapy genspider 爬虫名 允许爬取的范围
提取数据:
完善spider,使用xpath等方法
保存数据:
pipeline中保存数据
2. 创建scrapy项目
命令:scrapy startproject +<项目名字>
示例:scrapy startproject myspider
生成的目录和文件结果如下:
settings.py
中的重点字段和内涵
USER_AGENT
设置uaROBOTSTXT_OBEY
是否遵守robots协议,默认是遵守CONCURRENT_REQUESTS
设置并发请求的数量,默认是16个DOWNLOAD_DELAY
下载延迟,默认无延迟COOKIES_ENABLED
是否开启cookie,即每次请求带上前一次的cookie,默认是开启的DEFAULT_REQUEST_HEADERS
设置默认请求头SPIDER_MIDDLEWARES
爬虫中间件,设置过程和管道相同DOWNLOADER_MIDDLEWARES
下载中间件
创建爬虫
命令:scrapy genspider +<爬虫名字> + <允许爬取的域名>
生成的目录和文件结果如下:
完善spider
完善spider即通过方法进行数据的提取等操做:
注意:
response.xpath
方法的返回结果是一个类似list的类型,其中包含的是selector对象,操作和列表一样,但是有一些额外的方法extract()
返回一个包含有字符串的列表extract_first()
返回列表中的第一个字符串,列表为空没有返回None- spider中的parse方法必须有
- 需要抓取的url地址必须属于allowed_domains,但是start_urls中的url地址没有这个限制
- 启动爬虫的时候注意启动的位置,是在项目路径下启动
数据传递到pipeline
为什么要使用yield?
- 让整个函数变成一个生成器,有什么好处呢?
- 遍历这个函数的返回值的时候,挨个把数据读到内存,不会造成内存的瞬间占用过高
- python3中的range和python2中的xrange同理
注意:
- yield能够传递的对象只能是:
BaseItem
,Request
,dict
,None
6. 完善pipeline
pipeline在settings中能够开启多个,为什么需要开启多个?
- 不同的pipeline可以处理不同爬虫的数据
- 不同的pipeline能够进行不同的数据处理的操作,比如一个进行数据清洗,一个进行数据的保存
pipeline使用注意点
- 使用之前需要在settings中开启
- pipeline在setting中键表示位置(即pipeline在项目中的位置可以自定义),值表示距离引擎的远近,越近数据会越先经过
- 有多个pipeline的时候,process_item的方法必须
return item
,否则后一个pipeline取到的数据为None值 - pipeline中process_item的方法必须有,否则item没有办法接受和处理
- process_item方法接受item和spider,其中spider表示当前传递item过来的spider
scrapy介绍及使用相关推荐
- python爬虫之Scrapy介绍八——Scrapy-分布式(以爬取京东读书为示例)
Scrapy-分布式(scrapy-redis)介绍 1 Scrapy-分布式介绍 1.1 Scrapy-redis工作原理 1.2 Scrapy-redis 安装和基本使用 1.2.1 安装 1.2 ...
- Python scrapy框架(01):scrapy介绍 初识scrapy
前言: 最近在整理资料,顺便把部分干货写出来供学习以交流 一.scrapy的介绍 (1)何为框架?如何学习框架 框架就是一个集成了很多功能的一个通用性比较高的模板: 学习框架就学习框架中封装好的各种功 ...
- scrapy框架_Scrapy框架学习---Scrapy介绍(一)
Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...
- Scrapy介绍及入门
一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了页面抓取 (更确切来说, 网络 ...
- 第41讲:Scrapy框架的介绍
在前面编写爬虫的时候,如果我们使用 requests.aiohttp 等库,需要从头至尾把爬虫完整地实现一遍,比如说异常处理.爬取调度等,如果写的多了,的确会比较麻烦. 那么有没有什么办法可以提升我们 ...
- Scrapy:Python的爬虫框架----原理介绍
[scrapy]学习Scrapy入门 字数2820 阅读6946 评论2 喜欢12 Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息 ...
- Scrapy源码阅读分析_1_整体框架和流程介绍
From:https://blog.csdn.net/weixin_37947156/article/details/74435304 Scrapy github 下载地址:https://githu ...
- Scrapy基础 第三节:Scrapy框架结构和组件介绍
前置知识: 掌握Python的基础知识 对爬虫基础有一定了解 说明: 运行环境 Win10,Python3 64位 目录: 第一节:Scrapy介绍和安装配置 第二节:Scrapy版的Hello Wo ...
- python爬虫——scrapy框架(介绍)
一.scrapy介绍 Scrapy是用纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能快速的抓取. Scrapy使用了 Twisted[ˈtwɪ ...
- 5.Scrapy与相关应用
目录 Scrapy介绍 Scrapy爬取Quotes to Scrape Scrapy爬取cnblog Scrapy项目创建 Scrapy的组件 Scrapy的组件Spider 组件Item 组件It ...
最新文章
- Java编程基础04——流程控制语句
- 硬核!如何全面系统地自学 Java ?(必看)
- float占几个字节_一个HashMap对象占多少字节?
- P1115 最大子段和
- 【模板】可持久化并查集
- node 安装_VUE项目迁移之node.js的安装
- 利用HttpWebRequest和HttpWebResponse做黑客注射工具
- 20061008: IntelliJ Idea 6
- 公众服务常用电话号码大全
- php+生成条形码18位,php实现在线生成条形码示例分享(条形码生成器)
- margin-top传递问题
- 【三】Apache的管理及优化
- 基于CentOS7.2安装win7虚拟机
- 毕业三周年,又一个离别季
- axios拦截器作用及工作流程详解
- Shiro角色和权限管理
- 加强计算机管理,浅谈如何加强高校计算机专业管理
- K-近邻算法全面解析
- 网易云音乐、QQ音乐一键下载工具(Go语言)
- 机器学习100天(三十四):034 先验概率、条件概率