scrapy扩展

发布时间:2025-07-06 01:33

购买旅行箱扩展杆,扩展行李空间 #生活技巧# #居家生活技巧# #懒人生活技巧# #懒人出行攻略#

背景

钉钉自定义机器人介绍

钉钉机器人是钉钉群的一个高级扩展功能,但使用起来却非常简单,只需要注册一个钉钉账号,就可以将第三方服务信息聚合到钉钉群中,实现信息的自动同步。
常见的使用场景:
1、聚合Github、Gitlab等源码管理服务,实现源码更新同步;
2、聚合Trello、JIRA等项目协调服务,实现项目信息同步;
3、机器人支持Webhook自定义接入,就可以实现更多可能性,例如:将运维报警、自动化测试结果报告、工作&生活日程安排(上班打卡、下班吃饭、健身、读书、生日、纪念日...)的提醒;
目前自定义机器人支持文本(text)、链接(link)、markdown三种消息格式,五种消息类型,详细信息请参考自定义机器人官方文档

集成到Scrapy

通过阅读scrapy源码,可以很轻松的学习到其email扩展类的写法,模仿其写法,即可很简单快捷的(笔者仅用5分钟)将钉钉通知集成到项目中去。

邮件功能入口:scrapy/mail.py
扩展入口:scrapy/extensions/statsmailer.py

为了项目的整洁一致(洁癖),在项目目录下新建extensions扩展包,然后编写statsding.py代码

# -*- coding:utf-8 -*- # @Time : 2021/4/1 9:57 # @Author : MicLon import requests import json from scrapy import signals class Ding: def __init__(self, key): self.key = key @classmethod def from_settings(cls, settings): return cls( key=settings['DD_KEY'] ) def send(self, title, text, at_all=False): """ API 文档: https://developers.dingtalk.com/document/app/custom-robot-access?spm=ding_open_doc.document.0.0.6d9d28e1QcCPII#topic-2026027 :param title: 首屏会话透出的展示内容。 :param text: markdown格式的消息。 :param at_all: 是否@所有人。 :return: """ api_url = f'https://oapi.dingtalk.com/robot/send?access_token={self.key}' api_body = {"msgtype": "markdown", "markdown": json.dumps({"title": title, "text": text, "isAtAll": at_all})} headers = {'Content-Type': 'application/json'} resp = requests.post(url=api_url, json=api_body, headers=headers) if resp.status_code == 200: return True return False class StatsDing: def __init__(self, stats, dd): self.stats = stats self.dd = dd @classmethod def from_crawler(cls, crawler): dd = Ding.from_settings(crawler.settings) o = cls(crawler.stats, dd) crawler.signals.connect(o.spider_closed, signal=signals.spider_closed) return o def spider_closed(self, spider): spider_stats = self.stats.get_stats(spider) body = "Global stats\n\n" body += "\n".join("%-50s : %s" % i for i in self.stats.get_stats().items()) body += "\n\n%s stats\n\n" % spider.name body += "\n".join("%-50s : %s" % i for i in spider_stats.items()) return self.dd.send(spider.name, body)

别忘了需要在设置中配置钉钉机器人提供的access_token并且开启扩展

DD_KEY = '6d37b5526f5**********************178cfba0' EXTENSIONS = { '项目名.extensions.statsding.StatsDing': 500 }

测试

项目结束后,钉钉收到消息:

image

网址:scrapy扩展 https://www.yuejiaxmz.com/news/view/1131700

相关内容

【Scrapy性能提升秘籍】:最大化爬虫效率与稳定性的技巧
用scrapy爬取Kelly Blue Book二手车网数据
《Python3爬虫、数据清洗和可视化实战》之阅读不懂处、主要代码总结(5
Kotlin之扩展函数
todesk扩展屏 ToDesk扩展屏:打造高效双屏工作新体验
php添加openssl扩展
基于Hadoop的物品租赁系统的设计与实现
制冷设备扩展置物架.pdf
消费者行为解码:社交媒体数据分析的商业智能洞察
空间利用最大化与功能扩展

随便看看