python scrapy框架详解_Python爬虫知识点四--scrapy框架

一。scrapy结构数据

img?u=aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTI1MDQ2OS8yMDE3MTEvMTI1MDQ2OS0yMDE3MTEyMzIzMDExMzYwOS0xMjI5Nzk1MTI3LnBuZw==

解释:

1.名词解析:

o 引擎(Scrapy Engine)

o 调度器(Scheduler)

o 下载器(Downloader)

o 蜘蛛(Spiders)

o 项目管道(Item Pipeline)

o 下载器中间件(Downloader Middlewares)

o 蜘蛛中间件(Spider Middlewares)

o 调度中间件(Scheduler Middlewares)

2.具体解析

绿线是数据流向

 从初始URL开始,Scheduler会将其交给Downloader进

行下载

 下载之后会交给Spider进行分析

 Spider分析出来的结果有两种

 一种是需要进一步抓取的链接,如 “下一页”的链接,它们

会被传回Scheduler;另一种是需要保存的数据,它们被送到Item Pipeline里,进行

后期处理(详细分析、过滤、存储等)。

 在数据流动的通道里还可以安装各种中间件,进行必

要的处理。

二。初始化爬虫框架  Scrapy

命令: scrapy startproject qqnews

img?u=aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTI1MDQ2OS8yMDE3MTEvMTI1MDQ2OS0yMDE3MTEyMzIyNTgzMzM1OS0xMTEyNzI0ODQ5LnBuZw==

ps:真正的项目是在spiders里面写入的

三。scrapy组件spider

爬取流程

1. 先初始化请求URL列表,并指定下载后处

理response的回调函数。

2. 在parse回调中解析response并返回字典,Item

对象,Request对象或它们的迭代对象。

3 .在回调函数里面,使用选择器解析页面内容

,并生成解析后的结果Item。

4. 最后返回的这些Item通常会被持久化到数据库

中(使用Item Pipeline)或者使用Feed exports将

其保存到文件中。

标准项目结构实例:

1.items结构:定义变量,根据不同种数据结构定义

img?u=aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTI1MDQ2OS8yMDE3MTEvMTI1MDQ2OS0yMDE3MTEyMzIzMzkzNDQ1My0yMTI4NjE4MjEzLnBuZw==

2.spider结构中引入item里面,并作填充item

img?u=aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTI1MDQ2OS8yMDE3MTEvMTI1MDQ2OS0yMDE3MTEyMzIzMzkxMzczNC0xNzY0MzMwODEyLnBuZw==

3。pipline去清洗,验证,存入数据库,过滤等等 后续处理

Item Pipeline常用场景

 清理HTML数据

 验证被抓取的数据(检查item是否包含某些字段)

 重复性检查(然后丢弃)

 将抓取的数据存储到数据库中

img?u=aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTI1MDQ2OS8yMDE3MTEvMTI1MDQ2OS0yMDE3MTEyMzIzNDEwNzE0MC0yMDAwMzgwNzUzLnBuZw==

4.Scrapy组件Item Pipeline

经常会实现以下的方法:

 open_spider(self, spider) 蜘蛛打开的时执行

 close_spider(self, spider) 蜘蛛关闭时执行

 from_crawler(cls, crawler) 可访问核心组件比如配置和

信号,并注册钩子函数到Scrapy中

pipeline真正处理逻辑

定义一个Python类,实现方法process_item(self, item,

spider)即可,返回一个字典或Item,或者抛出DropItem

异常丢弃这个Item。

img?u=aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTI1MDQ2OS8yMDE3MTEvMTI1MDQ2OS0yMDE3MTEyMzIzNDQ1MTU2Mi01NzY2MjE4Mi5wbmc=

5.settings中定义哪种类型的pipeline

img?u=aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTI1MDQ2OS8yMDE3MTEvMTI1MDQ2OS0yMDE3MTEyMzIzNTEyNTYyNS0xODgyMjE3NzU2LnBuZw==

持续更新中。。。。,欢迎大家关注我的公众号LHWorld.

img?u=aHR0cDovL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjUwNDY5LzIwMTcxMS8xMjUwNDY5LTIwMTcxMTE1MDE0ODQ1NTE1LTYzNTcyNzU2OC5wbmc=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值