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

scrapy框架--快速了解

免责声明:本文仅做分享~ 

目录

介绍:

5大核心组件:

安装scrapy:

创建到启动:

修改日志配置:settings.py

修改君子协议配置:

伪装浏览器头:

让代码去终端执行:

数据保存:

1-基于命令

2-基于管道

文档:


介绍:

5大核心组件:


 

Scrapy是一个开源的Python框架,用于抓取网站数据并进行数据处理。Scrapy是一个快速、高效的框架,可以用来构建快速、可扩展的爬虫。Scrapy框架的主要组件包括:

1-引擎:Scrapy引擎负责处理数据流,包括调度、下载、解析、存储等。(包工头,大心脏)

2-调度器:Scrapy调度器负责管理URL请求,并将请求发送给下载器。

--过滤器和请求队列

3-spider:Spider是爬虫的主要组件,负责解析网页并提取数据。  

parse()方法:用于解析网页并提取数据。

4-下载器:下载器负责下载网页并返回响应。

5-管道:管道是Scrapy框架的核心组件之一,负责处理爬取到的数据。(保存数据,数据清洗,数据分析)

引擎--spider--调度器--下载器--引擎--管道

 


安装scrapy:

pip install scrapy因为scrapy是异步框架,为什么是异步框架,是因为用了Twisted
pip install scrapy #默认安装最新版本的Scrapy
Twisted是一个Python网络框架,Scrapy使用Twisted来实现网络通信。异步IO的实现。
注意兼容问题.
Twisted                   22.10.0如果使用scrapy2.9.0 Twisted-23.8.0 会有兼容问题
需要手动降版本
先卸载 pip uninstall Twisted
再安装 pip install Twisted==22.10.0 

 


创建到启动:

1-创建scrapy项目:
scrapy startproject 项目名称
scrapy startproject scrapy_demo12-进入项目目录:
cd scrapy_demo13-scrapy genspider 爬虫名称 域名
scrapy genspider baidu baidu.com4-启动项目:
scrapy crawl 爬虫名
scrapy crawl baidu

修改日志配置:settings.py

#启动--发现打印了一些信息,调用,响应看

--设置日志输出的级别.

# 设置日志输出的级别:出现错误才输出.

LOG_LEVEL = "ERROR"


修改君子协议配置:

当pa百度的时候,发现返回不了数据,---因为百度有robots.txt 协议 -- 默认是遵守.

# 君子协议

ROBOTSTXT_OBEY = False

--我们不遵守.


伪装浏览器头:

伪装一下下,要不然明牌打.

USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"


让代码去终端执行:

# xxx.py 放在项目的spider文件夹下from scrapy.cmdline import executeexecute(["scrapy","crawl", "爬虫名"])

数据保存:

1-基于命令

简单 -- 把所有数据return给parse()方法,然后执行命令.
缺点:有固定的格式:'json', 'jsonlines', 'jsonl', 'jl', 'csv', 'xml', 'marshal', 'pickle'
需要把parse()方法返回的数据保存到文件中: [{},{},{}]
scrapy crawl blibli -o blibli.txt  # 不行,会报错.scrapy crawl blibli -o blibli.csv
--本地打开乱码就另存为.(编码问题)

2-基于管道

复杂1-在爬虫文件中进行数据解析2-在items.py定义相关属性(你要保存什么数据,就定于什么属性.)3-在 爬虫文件中 把 解析的数据存储封装到item类型对象中4-把item类型对象提交给管道5-在管道文件中,接收爬虫文件提交过来的item类型对象6-配置文件中开启管道 (默认的类只针对保存到txt里面.) Excel / 数据库

文档:

 


 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 队列算法【基于顺序表的环形队列】
  • VMware安装Ubuntu 23.10.1系统图文版
  • 【小白深度学习入门】【1】卷积神经网络CNN 结构、基本原理以及常见问题详解
  • 前端 数值列 禁止输入多个小数点
  • Debian Linux上安装Jumpserver
  • vue-draggable-plus实现某些子元素不被拖拽
  • JS中【querySelectorAll】详解
  • 【Node】【7】函数
  • 8.28-回顾+容器与主机之间的通信+跨主机容器之间的通信
  • NTP简介及相关概念
  • mysql创建存储过程
  • 音频PCM的能量dB计算
  • iOS巨魔商店免越狱作弊解决方案
  • Redis: 用于纯缓存模式需要注意的地方
  • zoom 会议 javascript 转录例子
  • $translatePartialLoader加载失败及解决方式
  • 【面试系列】之二:关于js原型
  • AngularJS指令开发(1)——参数详解
  • canvas 绘制双线技巧
  • js ES6 求数组的交集,并集,还有差集
  • js如何打印object对象
  • React Native移动开发实战-3-实现页面间的数据传递
  • SAP云平台里Global Account和Sub Account的关系
  • ubuntu 下nginx安装 并支持https协议
  • 蓝海存储开关机注意事项总结
  • 如何设计一个微型分布式架构?
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 用Python写一份独特的元宵节祝福
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​马来语翻译中文去哪比较好?
  • ​数据链路层——流量控制可靠传输机制 ​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • $NOIp2018$劝退记
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (04)odoo视图操作
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (7)svelte 教程: Props(属性)
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)平衡树
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .Net Memory Profiler的使用举例