有时候我们需要获取整个站点的 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 文件:
大功告成!
在实际测试中,16个网站地图的 2200+ 链接在10秒内收集完成。如果你有需要,也可以试试这个方法~~