|
|
|
|
@ -3,19 +3,43 @@ import logging
|
|
|
|
|
import requests
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
|
|
# 创建当前模块的日志记录器,用于记录通知相关的日志信息
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SpiderNotify():
|
|
|
|
|
"""
|
|
|
|
|
搜索引擎爬虫通知类
|
|
|
|
|
用于向搜索引擎(目前支持百度)提交网站URL,告知内容更新,便于爬虫抓取
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def baidu_notify(urls):
|
|
|
|
|
"""
|
|
|
|
|
向百度搜索引擎提交URL的静态方法
|
|
|
|
|
通过百度链接提交通知接口,告知百度新增/更新的页面URL
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
urls (list): 需要提交的URL列表,每个元素为完整的页面URL字符串
|
|
|
|
|
"""
|
|
|
|
|
try:
|
|
|
|
|
# 将URL列表用换行符拼接,符合百度接口的数据格式要求
|
|
|
|
|
data = '\n'.join(urls)
|
|
|
|
|
# 向百度通知接口发送POST请求,提交URL数据
|
|
|
|
|
result = requests.post(settings.BAIDU_NOTIFY_URL, data=data)
|
|
|
|
|
# 记录接口返回的响应信息(日志级别:INFO)
|
|
|
|
|
logger.info(result.text)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
# 捕获所有异常并记录错误信息(日志级别:ERROR)
|
|
|
|
|
logger.error(e)
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def notify(url):
|
|
|
|
|
SpiderNotify.baidu_notify(url)
|
|
|
|
|
"""
|
|
|
|
|
通用通知入口静态方法
|
|
|
|
|
统一调用百度通知方法,便于后续扩展支持其他搜索引擎
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
url (list): 需要提交的URL列表,与baidu_notify方法的urls参数格式一致
|
|
|
|
|
"""
|
|
|
|
|
SpiderNotify.baidu_notify(url)
|