做网站需要套模板,电商网站建设需求分析引言,企业年金一般一个月交多少,网站建设科技1 安装scrapy
命令:
sudo apt-get install scrapy或者#xff1a;
pip/pip3 install scrapy2 scrapy项目开发流程
创建项目:
scrapy startproject mySpider生成一个爬虫:
scrapy genspider itcast itcast.cn提取数据: 根据网站结构在spider中实现数据采集相关内…1 安装scrapy
命令:
sudo apt-get install scrapy或者
pip/pip3 install scrapy2 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