专栏首页LhWorld哥陪你聊算法Python爬虫知识点四--scrapy框架

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 条评论
登录 后参与评论

相关文章

  • 【Spark篇】---Spark解决数据倾斜问题

    数据倾斜问题是大数据中的头号问题,所以解决数据清洗尤为重要,本文只针对几个常见的应用场景做些分析 。

    LhWorld哥陪你聊算法
  • 机器学习之线性回归

    分类算法:对于x1,x2,x3,x4作为特征值,当输入到算法中得出有限个结果。比如对于银行借钱,输入年龄,性别,信誉等值 银行反馈借款或者不借款为分类指标。

    LhWorld哥陪你聊算法
  • 广告名词解析

    广告主advertisers,显然是指想为自己的品牌或者产品做广告的人,例如宝马、Intel、蒙牛……

    LhWorld哥陪你聊算法
  • ICCV 2019 | 用于提高车牌识别的单幅噪声图像去噪和校正

    作者 | BBuf 单位 | 北京鼎汉技术有限公司 算法工程师(CV) 编辑 | 唐里

    AI科技评论
  • Postgres空间地理类型POINT POLYGON实现附近的定位和电子围栏功能

    现在使用经纬度转geohash的算法,将二维的距离运算转换为like前缀匹配。通过比较9位到5位前缀,来获取附近5米到3km之内的坐标,为了寻求更快的定位方法,...

    Ryan-Miao
  • 前端工程化-构建

    构建的核心是资源管理。简单说,构建就是把前端工程师开发的源代码进行编译、压缩、打包等一系列操作,最终产出可以直接上线或者可供后端工程师的资源。 构建可以划分为纯...

    寒月十八
  • 《Spring Boot开发:从0到1》第13章 常见问题与解决方案

    13.1 Spring MVC 关于controller的字符编码 13.2 Spring Boot启动报错 13.3 javax.servlet.Serv...

    一个会写诗的程序员
  • MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed

    有站长找到我,说数据库坏了,访问网站报错如下: Error establishing a database connection 看了下 MySQL 的错误日志...

    张戈
  • 13.9 SpringBoot集成Swagger2中遇到的问题13.9 SpringBoot集成Swagger2中遇到的问题

    我们在使用SpringBoot集成Swagger2中,访问:http://127.0.0.1:8188/swagger-ui.html

    一个会写诗的程序员
  • 二分查找及其变形与Python的bisect模块的关系

    1、binsearch(nums, target):标准的二分查找,找不到返回-1; 2、lowerbound(nums, target):查找第一个>=ta...

    echobingo

扫码关注云+社区

领取腾讯云代金券