Scrapy框架

Scrapy

概述

架构

引擎:负责数据流

数据流

引擎(向爬虫器请求第一个要抓取的url)
-爬虫器(提供url给引擎)
-引擎(接受网址,交给调度器排序入队)
-调度器(处理成请求给引擎)
-引擎(接受请求并通过下载器中间件给下载器下载)

-下载器
-引擎(收到response并通过爬虫器中间件给爬虫器处理)
-爬虫器(处理response,返回结果item给引擎,如有跟进的请求request也会给引擎)-引擎(接收到item,交给管道;新的request给调度器)-管道(存储数据)

创建一个Scrapy项目

进入一个自定义目录 cd C:…
运行命令:scrapy startproject blogSpider
可以看到目录下有一个文件夹。
在开始定义爬虫前我们需要定义爬虫的目标字段,如标题、链接等等就需要在items.py文件中进行适当修改

Import scrapy
Class BlogspiderItem(scrapy.Item)
	title= scrapy.Field()
	link= scrapy.Field()
	content=scrapy.Field()

获取博客网址并保存

在当前目录下输入
scrapy genspider santostang www.santostang.com
这就建立了一个santostang.py的文件,规定了爬取的网址。这就是爬虫器。
修改parse()中的内容获取网页并保存在本地:

def parse(self,response):
	filename=”index.html”
	with open(filename,’w’,encoding=”utf-8) as f:
		f.write(response.text)

运行并在cmd的blogSpider目录下执行:
scrapy crawl santostang
进入文件夹可以看到出现了index.html文件,这就是爬的源代码。

接下来需要提取数据,虽然Scrapy自带了Xpath和CSS选择器,但我们为方便还是采用BeautifulSoup来获取数据。修改santostang.py:

def parse(self,response):
	soup=BeautiulSoup(response.text,“lxml”)
	first_title=soup.find(“h1”,class_=”post-title”).a.text.strip()
	print(first_title)

	for i in range(len(title_list)):
		title=title_list[i].a.text.strip()
		print() 

如想用Scrapy处理item的方法,可以用之前定义的BlogspiderItem类

存储博客标题和链接数据

打开pipelines.py,修改代码:

file_path=...


...

def process_item(self,item,spider):
	...
	self.article.write(output)

修改设置文件,去注释后输入

scrapy crawl santostang

获取文章内容

yield?
回调函数

Scrapy设置文件

ROBOTSTXT_OBEY=True

取消5行注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值