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

爬虫工作量由小到大的思维转变---<Scrapy异常的存放小探讨>

前言:

异常很正常,调试异常/日志异常/错误异常~

但在爬虫的时候,写完代码--->运行后根本挡不住一些运行异常;于是,把异常写到了中间件~ 当然,这也没有错;

不过,其实可以直接这么设计一下...

正文:

参照一下中间件处理的异常

def process_exception(self, request, exception, spider):pass

我们除了在请求异常的时候给他记录一下之外;

还有个地方,例如

  • html解析异常/报错; spiders的解析
  • 数据处理异常,pipelines的数据解析class
  • 数据存储异常;存到数据库等文件的class
  • 等;

对于这些,明明请求到数据,但是意外引起的异常-----属于会`漏数据的行为`,必须要给他记录起来的;

因此,在scrapy中最好是自己给他补一个处理异常的方法,让他存在关键位置;

例如(一个小模版):

import loggingdef log_exception(self, item, spider, exception):logger = logging.getLogger('exception_logger')logger.setLevel(logging.ERROR)formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')file_handler = logging.FileHandler('数据存储异常.txt')file_handler.setLevel(logging.ERROR)file_handler.setFormatter(formatter)logger.addHandler(file_handler)msg = f"Exception occurred for item type: {type(item)}, Spider: {spider.name}, Exception: {exception}"logger.error(msg)#在所有处理数据的地方,给他套上def process_infoitem(self, item):try:# 处理逻辑# ...passexcept Exception as e:self.log_exception(item, spider, e)

然后,让他输出到文件呀,redis啥的.随你放! 

---等spiders_closed后, 你可以专门列一个爬虫,来把这些差了的数据给他补上!

(这是个小插曲,做个提醒)
http://www.lryc.cn/news/268205.html

相关文章:

  • 7.串口通信uart编写思路及自定义协议
  • 【物联网】光影之谜:RGB-LED传感器引领科技变革之路
  • promise的使用和实例方法
  • Visual Studio2022配置ReSharper C++ 常用设置
  • 论文解读类的公众号/知乎专栏,交给agent去做吧...
  • 【学习笔记】Java函数式编程03 Stream流-终结操作
  • 2024 Android保活总结
  • 迅为RK3568开发板Ubuntu上使用串口调试
  • 【http】HTTP/1.0、HTTP/1.1和HTTP/2.0
  • automkcert使用教程
  • tekton 发布 kubernetes 应用
  • unity脚本API中OnCollisionEnter()、OnTriggerEnter()二者的区别
  • 2023年12月【考试战报】|ORACLE OCP 19C考试通过
  • 鸿蒙操作系统:从手机到物联网,打造全场景智能体验
  • [Ray Tracing: The Next Week] 笔记
  • 企业级实战项目:基于 pycaret 自动化预测公司是否破产
  • dl转置卷积
  • 详解结构体(包含结构体内存对齐,柔性数组,位段)【尊嘟很详细】
  • 我的NPI项目之Android系统升级 - 同平台多产品的OTA
  • pnpm包管理器
  • flutter websocket发送ping包?
  • 基于采样的自动驾驶规划算法 - PRM,RRT,RRT*,CL-RRT
  • CGAL的D维范围树和线段树
  • 005.HCIA 传输层
  • LLM之RAG实战(八)| 使用Neo4j和LlamaIndex实现多模态RAG
  • 【SpringCloud笔记】(10)消息总线之Bus
  • 超酷的爬虫可视化界面
  • 【kafka消息里会有乱序消费的情况吗?如果有,是怎么解决的?】
  • 【PID精讲12】基于MATLAB和Simulink的仿真教程
  • 手机无人直播:解放直播的新方式