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。
- 环境准备:确保本地已安装 Python 环境,并通过
pip install requests安装所需的第三方库。 - 保存脚本:将上述完整代码复制并保存为本地文件,如
sitemap_extractor.py。 - 修改目标地址:编辑脚本中的
sitemap_url变量,将其值替换为实际要解析的 Sitemap 地址。 - 运行脚本:在终端或命令行中执行
python sitemap_extractor.py。 - 查看结果:脚本执行完毕后,会在当前目录生成
xsfly_links.txt文件,其中包含提取到的所有 URL。
(最后修改时间)、
(优先级)或
(更新频率)等字段,仅提取满足特定条件的 URL。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/258722.html