Scrapy框架

Scrapy是一个为了爬取网站数据,提取数据而编写的应用框架,爬虫的三步:获取网页,解析网页,存储网页都整合成了这个爬虫框架
在这里插入图片描述
Scrapy框架主要由五大组件组成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我们分别介绍各个组件的作用。

(1)、调度器(Scheduler):

调度器,说白了把它假设成为一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是 什么,同时去除重复的网址(不做无用功)。用户可以自己的需求定制调度器。

(2)、下载器(Downloader):

下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源。Scrapy的下载器代码不会太复杂,但效率高,主要的原因是Scrapy下载器是建立在twisted这个高效的异步模型上的(其实整个框架都在建立在这个模型上的)。

(3)、 爬虫(Spider):

爬虫,是用户最关心的部份。用户定制自己的爬虫(通过定制正则表达式等语法),用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。

(4)、 实体管道(Item Pipeline):

实体管道,用于处理爬虫(spider)提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。

(5)、Scrapy引擎(Scrapy Engine):

Scrapy引擎是整个框架的核心.它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。

创建一个Scrapy项目

在开始爬取前,必须创建一个新的Scrapy项目。在cmd中进入一个自定义目录,例如
cd c:\users\aaa\desktop
scrapy startproject blogSpider

blogSpider是项目名称
目录结构
blogSpider/
	scrapy.cfg
	blogSpider/
		__init__.py
		items.py  #定义需要保存的字段
		pipelines.py #对应管道组件,用来存储数据
		settings.py  #项目的设置文件
		spiders/	 #对应爬虫器,用来解析网页,提取数据
			__init__.py

在开始爬虫前,需要定义爬虫的目标字段,例如,需要获取www.baidu.com中所有文章的标题,链接,以及文章内容,打开items.py,在BlogspiderItem类输入以下需要的字段:

import scrapy
class BlogspiderItem(scrapy.Item):
	title = scrapy.Filed()
	link = scrapy.Filed()
	content = scrapy.Filed()
	

这里的scrapy.item类,类型为scrap.Field的类属性来定义一个Item 。item 有点像python里的dict字典

获取博客 网页并保存

在cmd的当前目录下
scrapy genspider adc www.baidu.com
在blogSpider/spider 创建了一个adc.py的文件,定义了名为adc的爬虫,并制定了爬取的范围www.baidu.com
打开adc.py文件,可以看到默认的代码如下:

import scrapy
class adcSpider(scrapy.Spider):
	name = "adc"
	allowed_domains = ["www.baidu.com"]
	start_urls = ["http://www.baidu.com/?]
	def parse(self,response):
		passs
**创建爬虫器必须要继承scrapy.Spider类**

除了在cmd中创建之外,也可以自己创建adc.py文件
name: 爬虫器唯一的名字,不同的爬虫不能使用相同的名字
allow_domains=[]: 是搜索的域名范围,规定爬虫只会爬出这个域名下的网页
start_urls: 爬虫器在启动时会爬取的url列表
parse():爬虫器的一个方法,获取到爬虫的下载response,之后解析网页
接下来,修改parse()获取网页并保存在本地

def parse(self,response):
	print(response.text)
	filename = "index.html"
	with open(filename,"w",enconding = "utf-8") as f:
	f.wirte(response.text)

然后在cmd里的bliogSpider目录下执行
scrapy crawl adc
上述代码中的adc就是本项目之前定义的名字。运行完成后,如果打印的日志里出现[scrapy.core.engine] INFO:Closing spider(finished),那么代表了执行完成。进入文件夹,可以看到当前文件加出现了 index,html文件,那么这就是爬取页面的源代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值