Python 3 实现在线xml sitemap索引文件提取URL到指定文件
xsobi 2025-01-08 18:17 9 浏览
毫无疑问,在SEO分析网站结构和开放搜索引擎端抓取页面数时,对sitemap文件的分析是最好的入手点。
通常规模不是太小的网站URL数量都会超过5万条,而搜索引擎要求单个sitemap文件的数量不能超过5万条,那么在此场景下sitemap索引文件便是好的解决方法,其用来存放单个sitemap文件的URL地址,在此基础上单个sitemap文件理论上可以囊括5万*5万=25亿,对网站来讲已经足够。
这里将会为大家提供Python 3实现的针对特定目标sitemap索引文件URL,提取其子sitemap文件,并提取子sitemap文件中的URL,记录对应的数量,并将提取的URL存放到本地的方法代码。
代码块有参考CSDN博主Yozz的部分代码,根据自己的使用场景进行了改良,具体代码如下:
# 功能介绍,通过在线访问网站sitemap-index文件链接,抓取其中的sitemap子文件,进一步抓取子文件提取其中的URL链接存放到电脑指定文件。
# 可用于特定场景下的小量级网站URL提取,手动提交 - 国内SEO
# 可用于对特定网站sitemap文件分析其核心页面数量和分布
# 可用于抓取目标分析网站的搜索引擎投放页面链接
# 杰西seo提供
import xml.dom.minidom as xmldom
import urllib.request
import xml
# 定义目标网站sitemap index文件的链接地址
index_url = "目标网站sitemap索引文件URL地址"
sitemap_path = 'sitemap子文件URL存放文件路径'
url_path = '抓取所有URL存放文件路径'
#访问sitemap index文件提取子sitemap URL,并且写入sitemap_url文件
http = urllib.request.Request(index_url)
http_run = urllib.request.urlopen(http)
dom = xml.dom.minidom.parse(http_run)
return_xml = dom.documentElement.getElementsByTagName('sitemap')
open(sitemap_path, 'w').close()
c1 = 0
for sitemap_xml in return_xml:
sitemap_url_loc = sitemap_xml.getElementsByTagName("loc")[0]
sitemap_url = sitemap_url_loc.firstChild.data
#print(a_url)
file = open(sitemap_path, 'a', encoding="utf-8")
file.write(sitemap_url+'\n')
file.close()
c1 += 1
continue
# 用于记录sitemap子文件的数量
print(f'共有{c1}个sitemap文件')
# 循环遍历访问[sitemap子文件URL存放文件]中的sitemap子文件URL链接
# c2用于记录所有sitemap文件中URL的数量
c2 = 0
for i in open(sitemap_path):
sitemap_url = i.strip()
if len(sitemap_url) == 0:
pass
else:
#访问单个子sitemap文件URL
http = urllib.request.Request(sitemap_url)
http_run = urllib.request.urlopen(http)
dom = xml.dom.minidom.parse(http_run)
return_xml = dom.documentElement.getElementsByTagName('url')
#open(url_path, 'w').close()
#c3 用于记录 单个sitemap子文件中的URL数量
c3 = 0
#循环遍历提取单个子sitemap文件中的URL
for url_xml in return_xml:
url_loc = url_xml.getElementsByTagName("loc")[0]
url = url_loc.firstChild.data
#print(a_url)
file = open(url_path, 'a', encoding="utf-8")
file.write(url + '\n')
file.close()
c2 += 1
c3 += 1
continue
#输出单个sitemap子文件中的URL数量
print(f'{sitemap_url}共有{c3}条URL')
# 输出所有sitemap文件中totalURL数量
print(f'总共有{c2}条URL')
关注杰西SEO获取更多SEO实操技巧
相关推荐
- 开源鸿蒙OpenHarmony 5.1.0(API 18)正式上线:进一步增强ArkUI
-
IT之家5月4日消息,开源鸿蒙OpenHarmony是由开放原子开源基金会孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,搭建一个智能终端设备操作系统的框架和平台,促进万物互联...
- day57:jQuery事件
-
链式操作<p>111</p><p>222</p>"""一行代码将第一个p标签变成红色第二个p标签变成绿色""...
- 基础干货:Pandas-Data Frame基础知识点总结
-
熊猫数据框架可以从列表、字典和字典列表等中创建。通过从现有存储中加载数据集来创建PandasDataFrame,存储可以是SQL数据库、CSV文件和Excel文件。Dataframe是一种二维数据结构...
- 万字长文带你通俗理解LightGBM
-
GBDT(GradientBoostingDecisionTree)是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等...
- 数组(I) - 网络统计学(11)
-
数组是将相同类型的数据按照特定顺序组合在一起的集合。其中,每个独立的变量都被称为数组元素,有时也会被称作下标变量。而用于区分各个数组元素的数字编号,则被称为下标。通常各种计算机编程语言都具备一定的数值...
- VUE业务中数据绑定无效-this.$set来帮忙
-
这个方法之前看文档肯定是看到了,但是从来没有遇到问题,就抛之脑后了!这不遇到问题了还得请它来帮忙!车祸现场问题剖析当你发现你给对象加了一个属性,在控制台能打印出来,但是却没有更新到视图上时,也许这个时...
- JS数组Reduce的妙用,收藏等于学会
-
作者:前端发现者来源:前端发现本文转载自微信公众号「前端发现」,作者前端发现者。转载本文请联系前端发现公众号。说到处理数组的方法,想必大家都不陌生了,今天我们一起来学习下理数组常见场景下的方法。首先来...
- Java 异常处理通关指南
-
前言在理想世界中,程序永远不会出现问题,用户输入的数据永远是正确的,逻辑没有任何问题,选择打开的文件也一定是存在的,内存永远是够用的……!但是现实世界里一旦出现这些问题,如果处理不好,程序就不能正常...
- Python 数据类型 - 数组
-
Python数据类型-数组在本节中,你将学习如何在Python中创建和访问数组的元素。数组是相同数据类型的元素的集合。数组和列表之间的主要区别是列表可以具有不同数据类型的元素。在Pytho...
- 「Python系列」 Python 数据结构之数组
-
在大多数编程语言中,数组都是一个基础而又普遍的数据结构。在很多算法中都有广泛的应用。在本文中,我们将了解鲜为人知的Python数组实现,该实现仅使用Python标准库中包含的核心语言功能。我们将看到每...
- COUNTIF函数用法大全
-
COUNTIF函数用于统计满足某个条件的单元格的数量,其基本用法为:COUNTIF(统计区域,指定的条件)如下图所示,要统计A列有几个5,可以使用以下公式:=COUNTIF(A2:A10,5)咱们把C...
- 强大到没有对手的Aggregate函数,碾压Sum等19个函数,你真的会吗
-
从前期的学习中,我们已经知道,Subtotal函数的功能非常强大,但还有一个函数,其功能强大到了没有对手,此函数就是Aggregate,可以实现Sum、Average、Count、Max、Min、Pr...
- RISC-V并不完美?
-
本文最初完成于几年之前,彼时作者正在ARM公司担任执行核心验证工程师职位。作者当时的工作深入或围绕多种处理器核心,而文中提到的观点深受这些经验的影响,换句话说,这些观点存在不同程度的偏见。作者依旧...
- MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)
-
目录1.索引基础2.索引类型2.1哈希索引2.2有序数组2.3B+树索引(InnoDB)3.联合索引4.最左前缀原则5.覆盖索引6.索引下推总结:1.索引基础索引对查询的速度有着至...
- 是时候学习一下INDEX+MATCH这个超级查询神器了
-
【温馨提示】亲爱的朋友,阅读之前请您点击【关注】,您的支持将是我最大的动力!当我们在处理表格数据查询时,首先会想到一个超牛查询函数VLOOKUP()。如果你觉得VLOOKUP函数超牛的话,今天阿钟老师...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- characterencodingfilter (33)
- getmonth (34)
- label换行 (33)
- android studio 3 0 (34)
- html转js (35)
- 索引的作用 (33)
- checkedlistbox (34)
- xmlhttp (35)
- mysql更改密码 (34)
- 权限777 (33)
- htmlposition (33)
- 学校网站模板 (34)
- textarea换行 (34)
- 轮播 (34)
- asp net三层架构 (38)
- bash (34)