当前位置: 首页 > news >正文

Python 很好用的爬虫框架:Scrapy:

了解Scrapy 爬虫框架的工作流程:

在scrapy中, 具体工作流程是这样的:

首先第一步 当爬虫引擎<engine>启动后, 引擎会到 spider 中获取 start_url<起始url> 然后将其封装为一个request对象, 交给调度器<scheduler>,  这个调度器中存的是一个又一个的待请求的url request对象, 然后调度器会通过引擎将请求对象交给 下载器<downloader>  下载器获取到请求对象后, 发送请求,获取响应, 然后将获取的响应封装成一个响应对象 response 后通过引擎再交给spider 来进行数据解析, 数据的解析结果如果是 Url, 则通过引擎继续交给调度器, 如果是数据, 则会通过引擎,将数据交给管道<pipline>, 这就是scrapy的工作流程,

下载:

pip install scrapy

创建爬虫项目:

在终端中使用scrapy命令来创建一个爬虫项目:

scrapy startproject 项目名字

 当我们使用命令完成创建项目的时候, scrapy会自动给我们创建一个有关 项目名  的文件夹:

第一个 game 只是scrapy 创建的项目文件, 也就是项目根目录。

第二个game 目录则是我们的scrapy项目了,  项目目录下的 spiders 目录就是 有关 spider 爬虫脚本的目录

items: 暂时先不了解

middlewares: 中间件

pipelines: 管道, 所有爬虫获取到的数据最终都会到管道来

settings: 项目配置文件

创建爬虫:

使用scrapy命令创建爬虫, 但在运行命令之前,需要 cd 进入到爬虫项目中

scrapy genspider <spidername><域名>

scrapy genspider myspider baidu.com

然后你会发现在spiders目录下,会多出一个爬虫脚本,点开脚本 :

 你会发现scrapy为我们创建了一个爬虫类, 集成之Spider

name 则是爬虫的名字

allowed_domains 则是允许爬取的域名, 除此以外的域名都会被过滤掉

start_urls 则就是起始URL了

而此爬虫类中, 还提供了一个 parse 方法, 此方法就是用来解析获取的响应结果的,

启动爬虫:

启动爬虫也很简单, 使用命令启动爬虫

scrapy crawl 爬虫名字

你会看到控制台打印很多东西, 不用着急, 这只是scrapy的输出日志而已, 我们可以通过命令行或者在settings中配置一下日志输出级别:

楼主这里是在settings 文件中配置的:

加上这句, 配置日志级别为 warning, 那么控制台就只能打印 warning及以上级别的信息了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 设计随笔 ---- ADR4525 篇
  • 【JAVASE】java语法(成员变量与局部变量的区别、赋值运算符中的易错点)
  • 基于R语言的糖尿病检测模型准确率97%
  • Linxu: Dynamic debug 简介
  • 近邻算法的详细介绍
  • 树的4种遍历
  • 【打印100个常用Linux命令】
  • websockets怎么工作的呢?
  • CentOS 7.8上安装ClamAV
  • 6.7.13 MV-Swin-T:使用多视图 SWIN 变压器进行乳房 X 光检查分类
  • 简单的订单系统,使用的os目录
  • 《Python程序设计》
  • LabVIEW进行图像拼接的实现方法与优化
  • 远程访问及控制
  • 手机建站介绍
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【css3】浏览器内核及其兼容性
  • 【React系列】如何构建React应用程序
  • 0x05 Python数据分析,Anaconda八斩刀
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Java超时控制的实现
  • node 版本过低
  • php中curl和soap方式请求服务超时问题
  • windows下如何用phpstorm同步测试服务器
  • - 概述 - 《设计模式(极简c++版)》
  • 给Prometheus造假数据的方法
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 聊聊hikari连接池的leakDetectionThreshold
  • 前端之Sass/Scss实战笔记
  • 移动端解决方案学习记录
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 国内开源镜像站点
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​Java基础复习笔记 第16章:网络编程
  • ​比特币大跌的 2 个原因
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​什么是bug?bug的源头在哪里?
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #HarmonyOS:基础语法
  • #宝哥教你#查看jquery绑定的事件函数
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $.ajax()
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (152)时序收敛--->(02)时序收敛二
  • (2022 CVPR) Unbiased Teacher v2
  • (Python第六天)文件处理
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (十二)Flink Table API