scrapy是什么
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取。使用了Twisted异步网络框架,可以加快我们的下载速度。
scrapy engine充当交通枢纽的核心作用,调度各个模块之间的联结,最终是达到分布式爬虫的目的。
需要我们更改的代码,就是爬虫模块和pipeline模块。爬虫模块负责爬取并提取数据,pipeline模块负责保存数据结果。在使用pipeline模块之前,需要在settings模块开启pipeline功能。
pipeline翻译成中文是「管线」的意思。起到数据传输的作用。
scrapy基本用法
scrapy是个爬虫框架,框架的意思就是模板,它会预定义一些设置,我们只需要加上自定义的内容就可以实现个性化的爬虫需求。
scrapy爬虫的步骤:
- 创建爬虫项目
scrapy startproject 项目名
- 创建爬虫
scrapy genspider 爬虫名 allowdomain
- allowdomain设置的是允许爬取的域名范围
- 写爬虫
- 修改爬虫文件,爬取并提取数据
- 修改settings文件,开启pipeline功能
- 修改pipeline文件,保存数据
- 运行爬虫
scrapy crawl 爬虫名
实例
抓取itcast.cn网站的师资信息。
itcast.py:
1 | # -*- coding: utf-8 -*- |
pipelines.py:
1 | # -*- coding: utf-8 -*- |
settings.py:
1 | # -*- coding: utf-8 -*- |
总结
xpath用法:item["name"] = li.xpath(".//div[@class='li_txt']/h3/text()").extract_first()
这里的extract_first()
是用来提取我们所需要的数据。等价于item["name"] = li.xpath(".//div[@class='li_txt']/h3/text()").extract()[0]
item["name"] = li.xpath(".//div[@class='li_txt']/h3/text()")
这样的用法,返回的结果是selector对象。
.extract()[0]
和.extract_first()
的区别:.extract()[0]
:如果没有结果,则程序报错。.extract_first()
:如果没有结果,则返回None。
pipeline设置的权重值,指的是距离中心引擎的管道长度,距离引擎越近的pipeline,越先执行。