安全狗iis版删了以后 网站打不开,3000块钱在朋友圈投放广告,客户关系管理系统功能,创建域名scrapy的概念和流程
学习目标#xff1a;
了解 scrapy的概念了解 scrapy框架的作用掌握 scrapy框架的运行流程掌握 scrapy中每个模块的作用 1. scrapy的概念
Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。 Scrapy 使…scrapy的概念和流程
学习目标
了解 scrapy的概念了解 scrapy框架的作用掌握 scrapy框架的运行流程掌握 scrapy中每个模块的作用 1. scrapy的概念
Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。 Scrapy 使用了Twisted[twɪstɪd]异步网络框架可以加快我们的下载速度。 Scrapy文档地址http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html 2. scrapy框架的作用 少量的代码就能够快速的抓取 3. scrapy的工作流程
3.1 回顾之前的爬虫流程 3.2 上面的流程可以改写为 3.3 scrapy的流程 其流程可以描述如下
爬虫中起始的url构造成request对象–爬虫中间件–引擎–调度器调度器把request–引擎–下载中间件—下载器下载器发送请求获取response响应----下载中间件----引擎—爬虫中间件—爬虫爬虫提取url地址组装成request对象----爬虫中间件—引擎—调度器重复步骤2爬虫提取数据—引擎—管道处理和保存数据
注意
图中中文是为了方便理解后加上去的图中绿色线条的表示数据的传递注意图中中间件的位置决定了其作用注意其中引擎的位置所有的模块之前相互独立只和引擎进行交互
3.4 scrapy的三个内置对象
request请求对象由url method post_data headers等构成response响应对象由url body status headers等构成item数据对象本质是个字典
3.5 scrapy中每个模块的具体作用 注意
爬虫中间件和下载中间件只是运行逻辑的位置不同作用是重复的如替换UA等 小结
scrapy的概念Scrapy是一个为了爬取网站数据提取结构性数据而编写的应用框架scrapy框架的运行流程以及数据传递过程 爬虫中起始的url构造成request对象–爬虫中间件–引擎–调度器调度器把request–引擎–下载中间件—下载器下载器发送请求获取response响应----下载中间件----引擎—爬虫中间件—爬虫爬虫提取url地址组装成request对象----爬虫中间件—引擎—调度器重复步骤2爬虫提取数据—引擎—管道处理和保存数据 scrapy框架的作用通过少量代码实现快速抓取掌握scrapy中每个模块的作用 引擎(engine)负责数据和信号在不腰痛模块间的传递 调度器(scheduler)实现一个队列存放引擎发过来的request请求对象 下载器(downloader)发送引擎发过来的request请求获取响应并将响应交给引擎 爬虫(spider)处理引擎发过来的response提取数据提取url并交给引擎 管道(pipeline)处理引擎传递过来的数据比如存储 下载中间件(downloader middleware)可以自定义的下载扩展比如设置代理ip 爬虫中间件(spider middleware)可以自定义request请求和进行response过滤与下载中间件作用重复 二、scrapy的入门使用
学习目标
掌握 scrapy的安装应用 创建scrapy的项目应用 创建scrapy爬虫应用 运行scrapy爬虫应用 scrapy定位以及提取数据或属性值的方法掌握 response响应对象的常用属性 1 安装scrapy
命令: sudo apt-get install scrapy 或者 pip/pip3 install scrapy
2 scrapy项目开发流程
创建项目: scrapy startproject mySpider生成一个爬虫: scrapy genspider itcast itcast.cn提取数据: 根据网站结构在spider中实现数据采集相关内容保存数据: 使用pipeline进行数据后续处理和保存
3. 创建项目 通过命令将scrapy项目的的文件生成出来后续步骤都是在项目文件中进行相关操作下面以抓取传智师资库来学习scrapy的入门使用http://www.itcast.cn/channel/teacher.shtml 创建scrapy项目的命令 scrapy startproject 项目名字 示例 scrapy startproject myspider
生成的目录和文件结果如下 4. 创建爬虫 通过命令创建出爬虫文件爬虫文件为主要的代码作业文件通常一个网站的爬取动作都会在爬虫文件中进行编写。 命令 在项目路径下执行: scrapy genspider 爬虫名字 允许爬取的域名
爬虫名字: 作为爬虫运行时的参数 允许爬取的域名: 为对于爬虫设置的爬取范围设置之后用于过滤要爬取的url如果爬取的url与允许的域不通则被过滤掉。
示例 cd myspiderscrapy genspider itcast itcast.cn生成的目录和文件结果如下 5. 完善爬虫 在上一步生成出来的爬虫文件中编写指定网站的数据采集操作实现数据提取 5.1 在/myspider/myspider/spiders/itcast.py中修改内容如下:
import scrapyclass ItcastSpider(scrapy.Spider): # 继承scrapy.spider# 爬虫名字 name itcast # 允许爬取的范围allowed_domains [itcast.cn] # 开始爬取的url地址start_urls [http://www.itcast.cn/channel/teacher.shtml]# 数据提取的方法接受下载中间件传过来的responsedef parse(self, response): # scrapy的response对象可以直接进行xpathnames response.xpath(//div[classtea_con]//li/div/h3/text()) print(names)# 获取具体数据文本的方式如下# 分组li_list response.xpath(//div[classtea_con]//li) for li in li_list:# 创建一个数据字典item {}# 利用scrapy封装好的xpath选择器定位元素并通过extract()或extract_first()来获取结果item[name] li.xpath(.//h3/text()).extract_first() # 老师的名字item[level] li.xpath(.//h4/text()).extract_first() # 老师的级别item[text] li.xpath(.//p/text()).extract_first() # 老师的介绍print(item)注意
scrapy.Spider爬虫类中必须有名为parse的解析如果网站结构层次比较复杂也可以自定义其他解析函数在解析函数中提取的url地址如果要发送请求则必须属于allowed_domains范围内但是start_urls中的url地址不受这个限制我们会在后续的课程中学习如何在解析函数中构造发送请求启动爬虫的时候注意启动的位置是在项目路径下启动parse()函数中使用yield返回数据注意解析函数中的yield能够传递的对象只能是BaseItem, Request, dict, None
5.2 定位元素以及提取数据、属性值的方法 解析并获取scrapy爬虫中的数据: 利用xpath规则字符串进行定位和提取 response.xpath方法的返回结果是一个类似list的类型其中包含的是selector对象操作和列表一样但是有一些额外的方法额外方法extract()返回一个包含有字符串的列表额外方法extract_first()返回列表中的第一个字符串列表为空没有返回None
5.3 response响应对象的常用属性
response.url当前响应的url地址response.request.url当前响应对应的请求的url地址response.headers响应头response.requests.headers当前响应的请求头response.body响应体也就是html代码byte类型response.status响应状态码
6 保存数据 利用管道pipeline来处理(保存)数据 6.1 在pipelines.py文件中定义对数据的操作
定义一个管道类重写管道类的process_item方法process_item方法处理完item之后必须返回给引擎
import jsonclass ItcastPipeline():# 爬虫文件中提取数据的方法每yield一次item就会运行一次# 该方法为固定名称函数def process_item(self, item, spider):print(item)return item6.2 在settings.py配置启用管道
ITEM_PIPELINES {myspider.pipelines.ItcastPipeline: 400
}配置项中键为使用的管道类管道类使用.进行分割第一个为项目目录第二个为文件第三个为定义的管道类。 配置项中值为管道的使用顺序设置的数值约小越优先执行该值一般设置为1000以内。
7. 运行scrapy
命令在项目目录下执行scrapy crawl 爬虫名字
示例scrapy crawl itcast 小结
scrapy的安装pip install scrapy创建scrapy的项目: scrapy startproject myspider创建scrapy爬虫在项目目录下执行 scrapy genspider itcast itcast.cn运行scrapy爬虫在项目目录下执行 scrapy crawl itcast解析并获取scrapy爬虫中的数据 response.xpath方法的返回结果是一个类似list的类型其中包含的是selector对象操作和列表一样但是有一些额外的方法extract() 返回一个包含有字符串的列表extract_first() 返回列表中的第一个字符串列表为空没有返回None scrapy管道的基本使用: 完善pipelines.py中的process_item函数在settings.py中设置开启pipeline response响应对象的常用属性 response.url当前响应的url地址response.request.url当前响应对应的请求的url地址response.headers响应头response.requests.headers当前响应的请求头response.body响应体也就是html代码byte类型response.status响应状态码