Python 3 实现在线xml sitemap索引文件提取URL到指定文件

liftword2周前 (04-15)技术文章5

毫无疑问,在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实操技巧

相关文章

Python 解析 XML

1 简介XML 全称 Extensible Markup Language,中文译为可扩展标记语言。XML 之前有两个先行者:SGML 和 HTML,率先登场的是 SGML, 尽管它功能强大,但文档结...

Python 读写XML文件

在Python中,可以使用内置的xml.etree.ElementTree模块来读取和写入XML文件。这个模块提供了一种简单而有效的方式来解析和操作XML文档。下面是使用xml.etree.Eleme...

深入解析:Python中的XML处理技巧与实践

解析XML文件是Python编程中的一项重要技能,特别是在处理配置文件、数据交换格式或web服务响应时。Python提供了多种库来实现这一功能,其中xml.etree.ElementTree和lxml...

python编程:配置文件xml的读取写入

XML,全称为ExtentsibleMarkup Language,即可扩展标记语言,是用来定义其它语言的一种元语言,使用自定义的标签对文档内容进行描述。被设计用来传输和存储数据。XML和HTML类似...

Python和XML

XML 是一种可移植的开源语言,它允许程序员开发可由其他应用程序读取的应用程序,而不管操作系统和/或开发语言如何。什么是 XML?可扩展标记语言 (XML) 是一种与 HTML 或 SGML 非常相似...

20.2 PyQt5-【XML操作】-QXmlStreamWriter

1.QXmlStreamWriter简介在 PyQt5 中,QXmlStreamWriter用于逐步生成 XML 数据。支持以流的形式写入XML,适合处理较大或复杂的XML文件2.QXmlStream...