|
|
|
|
@ -1,21 +1,43 @@
|
|
|
|
|
# 导入日志模块:记录推送过程的成功信息与错误,便于排查问题
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
# 导入 HTTP 请求库:用于向百度搜索引擎接口发送 POST 请求
|
|
|
|
|
import requests
|
|
|
|
|
# 导入 Django 项目配置:获取百度主动推送的接口 URL(从 settings.py 读取)
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
|
|
# 初始化日志对象:指定日志归属为当前模块,便于区分不同模块的日志
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 搜索引擎推送工具类:封装向百度等搜索引擎主动提交页面的逻辑
|
|
|
|
|
class SpiderNotify():
|
|
|
|
|
@staticmethod
|
|
|
|
|
def baidu_notify(urls):
|
|
|
|
|
"""
|
|
|
|
|
向百度搜索引擎主动推送页面(基于百度站长平台的“链接提交”接口)
|
|
|
|
|
目的:让百度快速发现新页面,缩短收录周期(提升 SEO 效率)
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
urls: 待推送的 URL 列表(如 ['https://xxx.com/article/1/', 'https://xxx.com/article/2/'])
|
|
|
|
|
"""
|
|
|
|
|
try:
|
|
|
|
|
# 格式化请求数据:百度接口要求 URL 以换行符(\n)分隔,拼接成字符串
|
|
|
|
|
data = '\n'.join(urls)
|
|
|
|
|
# 发送 POST 请求:调用 settings 中配置的百度推送接口 URL
|
|
|
|
|
result = requests.post(settings.BAIDU_NOTIFY_URL, data=data)
|
|
|
|
|
# 记录推送结果:将百度返回的响应文本(如成功/失败数量)写入日志
|
|
|
|
|
logger.info(result.text)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
# 捕获异常(如网络错误、接口超时等),记录错误信息到日志
|
|
|
|
|
logger.error(e)
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def notify(url):
|
|
|
|
|
SpiderNotify.baidu_notify(url)
|
|
|
|
|
"""
|
|
|
|
|
通用推送方法:统一入口,当前仅调用百度推送(可扩展支持其他搜索引擎)
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
url: 待推送的 URL(支持单个 URL 或 URL 列表,此处兼容百度推送的列表格式)
|
|
|
|
|
"""
|
|
|
|
|
# 调用百度推送方法,实现页面提交
|
|
|
|
|
SpiderNotify.baidu_notify(url)
|