如何使用 Python 解析 Sitemap.xml 并提取所有URL

如何使用 Python 解析 Sitemap.xml 并提取所有URLSitemap 网站地图 是一种 XML 格式的文件 其中记录了网站内可供搜索引擎抓取的全部页面地址 它有助于搜索引擎更好地理解网站结构并提高抓取效率 Sitemap 通常存放在网站根目录下 例如 https www iyanxi com sitemap xml import requests import xml etree ElementTree as ET def

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



Sitemap(网站地图)是一种 XML 格式的文件,其中记录了网站内可供搜索引擎抓取的全部页面地址。它有助于搜索引擎更好地理解网站结构并提高抓取效率。Sitemap 通常存放在网站根目录下,例如:https://www.iyanxi.com/sitemap.xml

import requests import xml.etree.ElementTree as ET def fetch_and_extract_sitemap_links(sitemap_url, output_file='iyanxi_links.txt'): """ 从指定的sitemap URL获取内容并提取所有https://www.iyanxi.com/开头的链接 Parameters: sitemap_url (str): sitemap.xml的URL地址 output_file (str): 输出文件名 """ try: # 设置请求头,模拟浏览器行为 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } # 发送GET请求获取sitemap内容 print(f"正在从 {sitemap_url} 获取sitemap数据...") response = requests.get(sitemap_url, headers=headers, timeout=10) # 检查请求是否成功 response.raise_for_status() # 解析XML内容 root = ET.fromstring(response.content) # 定义命名空间 namespaces = { 'ns': 'http://www.sitemaps.org/schemas/sitemap/0.9' } # 查找所有 
  
    
    
      元素 urls = root.findall('.//ns:url', namespaces) # 提取符合条件的链接 xsfly_links = [] for url in urls: loc = url.find('ns:loc', namespaces) if loc is not None and loc.text.startswith('https://www.iyanxi.com/'): xsfly_links.append(loc.text) # 将链接保存到txt文件 with open(output_file, 'w', encoding='utf-8') as file: for link in xsfly_links: file.write(link + ' ') print(f"成功提取 {len(xsfly_links)} 个链接") print(f"结果已保存到 {output_file}") return xsfly_links except requests.exceptions.RequestException as e: print(f"网络请求错误: {e}") return [] except ET.ParseError as e: print(f"XML解析错误: {e}") return [] except Exception as e: print(f"发生未知错误: {e}") return [] # 使用示例 if __name__ == "__main__": sitemap_url = "https://www.iyanxi.com/sitemap.xml" links = fetch_and_extract_sitemap_links(sitemap_url) # 可选:打印前几个链接作为预览 if links: print(" 前5个链接预览:") for i, link in enumerate(links[:5], 1): print(f"{i}. {link}") if len(links) > 5: print("... (更多链接已保存到文件)") else: print("[WARNING] 未提取到任何链接,请检查 sitemap URL 或网络连接") 
    
  • 导入所需库
    requests:用于发起 HTTP 网络请求,获取 Sitemap 文件内容。
    xml.etree.ElementTree:用于解析和处理 XML 格式的数据。





  • 发送请求与错误处理
    通过 try-except 结构捕获网络请求失败、响应状态异常以及 XML 解析错误等潜在问题,确保脚本执行过程的稳定性。


  • 解析 XML 内容
    借助 ElementTree 解析 Sitemap 的 XML 结构,并正确处理其中可能出现的命名空间(namespace),保证 URL 节点的准确定位。


  • 提取并过滤 URL
    遍历所有   节点,提取其子节点   中的文本内容作为页面地址。您也可根据实际需要添加自定义过滤条件,例如仅保留特定域名下的 URL。


  1. 环境准备:确保本地已安装 Python 环境,并通过 pip install requests 安装所需的第三方库。
  2. 保存脚本:将上述完整代码复制并保存为本地文件,如 sitemap_extractor.py
  3. 修改目标地址:编辑脚本中的 sitemap_url 变量,将其值替换为实际要解析的 Sitemap 地址。
  4. 运行脚本:在终端或命令行中执行 python sitemap_extractor.py
  5. 查看结果:脚本执行完毕后,会在当前目录生成 xsfly_links.txt 文件,其中包含提取到的所有 URL。

  • 精细化过滤:依据  (最后修改时间)、 (优先级)或  (更新频率)等字段,仅提取满足特定条件的 URL。
  • 小讯
    上一篇 2026-04-13 22:07
    下一篇 2026-04-13 22:05

    相关推荐

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
    如需转载请保留出处:https://51itzy.com/kjqy/258722.html