Python爬虫知识点四--scrapy框架

一。scrapy结构数据

解释:

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

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

 三。scrapy组件spider

爬取流程  1. 先初始化请求URL列表,并指定下载后处 理response的回调函数。 2. 在parse回调中解析response并返回字典,Item 对象,Request对象或它们的迭代对象。 3 .在回调函数里面,使用选择器解析页面内容 ,并生成解析后的结果Item。 4. 最后返回的这些Item通常会被持久化到数据库 中(使用Item Pipeline)或者使用Feed exports将 其保存到文件中。

标准项目结构实例:

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

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

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

Item Pipeline常用场景  清理HTML数据  验证被抓取的数据(检查item是否包含某些字段)  重复性检查(然后丢弃)  将抓取的数据存储到数据库中

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。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏崔庆才的专栏

Scrapy框架的使用之Item Pipeline的用法

2K40
来自专栏崔庆才的专栏

Scrapy 爬虫框架入门案例详解

本篇会通过介绍一个简单的项目,走一遍Scrapy抓取流程,通过这个过程,可以对Scrapy对基本用法和原理有大体的了解,作为入门。

2.3K00
来自专栏阿杜的世界

ThreadLocal的使用场景

最近项目中遇到如下的场景:在执行数据迁移时,需要按照用户粒度加锁,因此考虑使用排他锁,迁移工具和业务服务属于两个服务,因此需要使用分布式锁。

9620
来自专栏张泽旭的专栏

基于spring boot sftp文件上传

对sftp文件上传将行封装,实现连接的单例模式,完成线程安全的改进,sftp文件上传下载失败的重试。

44210
来自专栏大前端_Web

深入理解JS异步编程二(分布式事件)

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

13340
来自专栏七夜安全博客

(原创)七夜在线音乐台开发 第三弹 爬虫篇

15720
来自专栏walterlv - 吕毅的博客

.NET 使用 XPath 来读写 XML 文件

发布于 2018-06-24 13:10 更新于 2018-09...

11710
来自专栏架构师之旅

Web项目接口自动化测试框架搭建

一、原理及特点 参数放在XML文件中进行管理 用httpClient简单封装一个httpUtils工具类 测试用例管理使用了testNg管理,使用了TestNG...

27760
来自专栏一个爱瞎折腾的程序猿

winform复制文件到指定目录

30110
来自专栏ytkah

Laravel删除产品-CRUD之delete(destroy)

  上一篇讲了Laravel编辑产品-CRUD之edit和update,现在我们讲一下删除产品,方法和前面的几篇文章类似,照着ytkah来操作吧

11620

扫码关注云+社区

领取腾讯云代金券