小旋风蜘蛛池自动定时添加谷歌可识别站点地图

2024-03-05 13:20

本文主要是介绍小旋风蜘蛛池自动定时添加谷歌可识别站点地图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 问题:

在使用小旋风蜘蛛池向谷歌添加自己的站点地图时,会出现无法识别的错误,因为每次访问https://域名/sitemap/google.xml的时候数据都会改变

解决思路:

那么我们可以通过访问这个会改变数据的xml来自己获取自己的xml并作为一个不会变数据的xml来进行提交

python代码

import requests
from xml.etree import ElementTree as ET
import re
import os
import argparseparser = argparse.ArgumentParser(description='站点目录自动生成 output.xml')
parser.add_argument('domain',help='域名')
def fetch_sitemap(domain):url = f'https://{domain}/sitemap/google.xml'headers = {'Host': f'{domain}','Cache-Control': 'max-age=0','Sec-Ch-Ua': '"Chromium";v="103", ".Not/A)Brand";v="99"','Sec-Ch-Ua-Mobile': '?0','Sec-Ch-Ua-Platform': '"Windows"','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/536.36 (KHTML, like Gecko) Chrome/105.0.5060.53 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Sec-Fetch-Site': 'none','Sec-Fetch-Mode': 'navigate','Sec-Fetch-User': '?1','Sec-Fetch-Dest': 'document','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9'}try:response = requests.get(url, headers=headers)response.raise_for_status()  # 抛出异常如果请求不成功except requests.exceptions.RequestException as e:print(f"Error fetching sitemap: {e}")return Nonereturn response.textdef merge_xml(xml_list):# 创建一个根元素root = ET.Element("root")# 遍历每个XML字符串,解析为Element对象,并添加到根元素下for xml_string in xml_list:try:xml_element = ET.fromstring(xml_string)root.extend(xml_element)except ET.ParseError as e:print(f"Error parsing XML: {e}")# 创建一个新的XML树merged_tree = ET.ElementTree(root)# 返回合并后的XML字符串return ET.tostring(root, encoding='utf-8').decode('utf-8')def save_to_file(data, output_file):with open(output_file, 'w', encoding='utf-8') as file:file.write(data)print(f"")xmlchange()def xmlchange():# 读取原始XML文件with open('output1.xml', 'r', encoding='utf-8') as file:xml_content = file.read()# 删除所有ns0:前缀xml_content = re.sub(r'ns0:', '', xml_content)# 修改文件的第一行xml_content = '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>' + \xml_content.split('\n', 1)[1]xml_content = re.sub(r'</root>', '</urlset>', xml_content)# 将修改后的内容写回文件with open('output.xml', 'w', encoding='utf-8') as file:file.write(xml_content)# 删除output1.txt文件if os.path.exists('output1.xml'):os.remove('output1.xml')print("Successful")# 调用函数并传入XML文件路径if __name__ == "__main__":args = parser.parse_args()output_file = "output1.xml"num_requests = 10sitemap_data_list = []for _ in range(num_requests):sitemap_data = fetch_sitemap(args.domain)if sitemap_data:sitemap_data_list.append(sitemap_data)merged_sitemap = merge_xml(sitemap_data_list)if merged_sitemap:save_to_file(merged_sitemap, output_file)

使用方法

  1. num_requests为请求次数,按照需要的xml量填写

  2. python getxml.py "域名"

  3. 输出output.xml 

添加宝塔定时任务

#!/bin/bash# 执行Python脚本
python3 /root/getxml.py 你的域名# 检查Python脚本是否成功执行
if [ $? -eq 0 ]; then# 移动output.xml到指定文件夹mv output.xml 网站根目录echo "成功移动文件到 网站根目录"
elseecho "Python脚本执行失败"
fi

使用方法

  1. 先将getxml.py(上方python文件)放入你的root目录下
  2. 然后将定时任务内的"你的域名"和"网站根目录"写好
  3. 可设置多个域名,实现某时间段为某域名的站点地图

即可直接向谷歌提交https://域名/output.xml为你的站点地图

温馨提示:记得安装pip3包,否则python文件执行会报错!

 

这篇关于小旋风蜘蛛池自动定时添加谷歌可识别站点地图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/776640

相关文章

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

python利用backoff实现异常自动重试详解

《python利用backoff实现异常自动重试详解》backoff是一个用于实现重试机制的Python库,通过指数退避或其他策略自动重试失败的操作,下面小编就来和大家详细讲讲如何利用backoff实... 目录1. backoff 库简介2. on_exception 装饰器的原理2.1 核心逻辑2.2