From bbdb2bed3fe2a18455de48e38a83a33eb0503871 Mon Sep 17 00:00:00 2001 From: plqo32bax <3547574347@qq.com> Date: Mon, 10 Nov 2025 00:00:32 +0800 Subject: [PATCH] Update spider_notify.py --- .../djangoblog/spider_notify.py | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/DjangoBlog-master/DjangoBlog-master/djangoblog/spider_notify.py b/src/DjangoBlog-master/DjangoBlog-master/djangoblog/spider_notify.py index 7b909e9..8ddacff 100644 --- a/src/DjangoBlog-master/DjangoBlog-master/djangoblog/spider_notify.py +++ b/src/DjangoBlog-master/DjangoBlog-master/djangoblog/spider_notify.py @@ -1,21 +1,55 @@ import logging - import requests from django.conf import settings +# 获取当前模块的日志记录器,用于记录日志信息 logger = logging.getLogger(__name__) class SpiderNotify(): + """蜘蛛通知类,用于向搜索引擎推送URL,帮助搜索引擎发现和收录网站内容""" + @staticmethod def baidu_notify(urls): + """ + 向百度搜索引擎推送URL,促进网站收录 + + Args: + urls (list): 需要推送的URL列表,通常为新发布或更新的文章链接 + + Note: + 使用百度站长平台的API接口进行URL推送 + 推送格式为每行一个URL的纯文本数据 + """ try: + # 将URL列表转换为百度API要求的格式:每行一个URL的字符串 + # 例如:['http://example.com/1', 'http://example.com/2'] -> "http://example.com/1\nhttp://example.com/2" data = '\n'.join(urls) + + # 发送POST请求到百度推送接口[8,9](@ref) + # 使用Django设置中配置的百度推送URL,避免硬编码 result = requests.post(settings.BAIDU_NOTIFY_URL, data=data) + + # 记录推送结果到日志,便于监控和调试[6,7](@ref) logger.info(result.text) + except Exception as e: + # 捕获并记录所有可能的异常,如网络错误、配置错误等 + # 使用错误级别日志记录异常信息[6](@ref) logger.error(e) @staticmethod def notify(url): - SpiderNotify.baidu_notify(url) + """ + 推送URL的便捷方法,可以扩展支持多个搜索引擎 + + Args: + url (str or list): 单个URL字符串或URL列表 + """ + # 如果传入的是单个URL,转换为列表形式 + if isinstance(url, str): + url = [url] + + # 调用百度推送方法 + # 这里的设计便于未来扩展其他搜索引擎的推送功能 + SpiderNotify.baidu_notify(url) \ No newline at end of file