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

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

相关文章

基于Python编写一个git自动上传的脚本(打包成exe)

《基于Python编写一个git自动上传的脚本(打包成exe)》这篇文章主要为大家详细介绍了如何基于Python编写一个git自动上传的脚本并打包成exe,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录前言效果如下源码实现利用pyinstaller打包成exe利用ResourceHacker修改e

SpringBoot整合 Quartz实现定时推送实战指南

《SpringBoot整合Quartz实现定时推送实战指南》文章介绍了SpringBoot中使用Quartz动态定时任务和任务持久化实现多条不确定结束时间并提前N分钟推送的方案,本文结合实例代码给大... 目录前言一、Quartz 是什么?1、核心定位:解决什么问题?2、Quartz 核心组件二、使用步骤1

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

SpringBoot中使用定时任务schedule详解

《SpringBoot中使用定时任务schedule详解》文章介绍了如何在Spring应用中使用@EnableScheduling注解启用定时任务,并创建一个配置类来定义定时任务的执行,文章还详细解释... 目录1、在spring启动类上添加注解@EnableScheduling2、创建定时任务配置类3、执

基于Nacos实现SpringBoot动态定时任务调度

《基于Nacos实现SpringBoot动态定时任务调度》本文主要介绍了在SpringBoot项目中使用SpringScheduling实现定时任务,并通过Nacos动态配置Cron表达式实现任务的动... 目录背景实现动态变更定时机制配置化 cron 表达式Spring schedule 调度规则追踪定时

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放