用 Python 轻松导出 xml 站点地图里的所有 URL

有时候我们需要获取整个站点的 URL 集合,例如 WordPress 的首页、分类、标签、文章、页面的 URL,如何才能快速获取并写入到 TXT 文本文件中呢?

我们可以借助 Python 的 Requests 和 xml 库来轻松实现。

假设有多个站点,每个站点都有多个 sitemap 文件 ,且所有站点的文件名是相同的,那么可以这样写:

import requests
import xml.etree.ElementTree as ET
import os

# 获取当前脚本所在目录
script_directory = os.path.dirname(os.path.abspath(__file__))

# 设置工作目录
os.chdir(script_directory)

# 打印当前工作目录
print("当前工作目录:", os.getcwd())

# WordPress sitemap.xml URLs
# 替换成实际域名,域名后不要漏掉 /
sites = [
    "https://www.pcoic.com/",
    "https://www.idcbuy.net/",
    "https://www.sqhow.com/",
    "https://ziyoo.ren/"
]
# 替换成实际的文件名
sitemap_names = [
    "post-sitemap.xml",
    "page-sitemap.xml",
    "category-sitemap.xml",
    "post_tag-sitemap.xml"
    # 根据需要可以添加更多
]
# 拼接域名和文件名,生成完整 URL 列表
sitemap_urls = {site+name for site in sites for name in sitemap_names}

# 打开一个 TXT 文件以供写入,"w" 参数表示写入模式
with open('urls.txt', 'w') as txt_file:
    # 遍历所有 sitemap.xml 文件
    for sitemap_url in sitemap_urls:
        # 发送 HTTP 请求获取 sitemap.xml 内容
        response = requests.get(sitemap_url)

        if response.status_code == 200:
            # 解析 XML 内容
            root = ET.fromstring(response.content)

            # 遍历 XML 树,提取 URL 并写入文件
            for url in root.iter('{http://www.sitemaps.org/schemas/sitemap/0.9}url'):
                loc = url.find('{http://www.sitemaps.org/schemas/sitemap/0.9}loc').text
                txt_file.write(loc + "\n")

            print(f"从 {sitemap_url} 提取的URL已成功写入到 urls.txt 文件。")
        else:
            print(f"无法获取 {sitemap_url} 文件。状态码: {response.status_code}")

print("所有 sitemap.xml 文件的URL已成功提取并写入到 urls.txt 文件。") 

运行代码输出:

当前工作目录: c:\Users\louis\Python\site_urls
从 https://www.pcoic.com/page-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.pcoic.com/post_tag-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://ziyoo.ren/post-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.sqhow.com/category-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.idcbuy.net/page-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.sqhow.com/post-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.sqhow.com/page-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.idcbuy.net/post_tag-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://ziyoo.ren/category-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://ziyoo.ren/post_tag-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.pcoic.com/post-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.idcbuy.net/post-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.pcoic.com/category-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.sqhow.com/post_tag-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://www.idcbuy.net/category-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
从 https://ziyoo.ren/page-sitemap.xml 提取的URL已成功写入到 urls.txt 文件。
所有 sitemap.xml 文件的URL已成功提取并写入到 urls.txt 文件。

得到一个包含站点地图中所有链接的 TXT 文件:

从 xml 站点地图中读取所有链接并保存在 TXT 文件中

大功告成!

在实际测试中,16个网站地图的 2200+ 链接在10秒内收集完成。如果你有需要,也可以试试这个方法~~

耕读君
耕读君

一个筋斗十万八千里,说明上云好啊

文章: 197

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注