Python解析sitemap.xml
On this page
准备工作
首先,你的网站先生成好网站的网站地图sitemap.xml文件,示例如下:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>/page1</loc>
<lastmod>2023-07-10</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>/page2</loc>
<lastmod>2023-07-01</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<!-- 更多url元素 -->
</urlset>
大致看一下这个样式结构,然后可以用Python写解析脚本。
编写Python脚本
import xml.etree.ElementTree as ET
# 定义域名
domain = "http://example.com"
# 解析sitemap.xml文件并提取所有的URL
def parse_sitemap(file_path):
tree = ET.parse(file_path)
root = tree.getroot()
urls = []
# 这里是有命名空间的,如果没有可以去掉{http://www.sitemaps.org/schemas/sitemap/0.9}
for url_elem in root.findall('{http://www.sitemaps.org/schemas/sitemap/0.9}url'):
loc_elem = url_elem.find('{http://www.sitemaps.org/schemas/sitemap/0.9}loc')
if loc_elem is not None:
url = domain + loc_elem.text
urls.append(url)
return urls
# 保存所有的URL到url.txt文件中
def save_urls(urls, file_path):
with open(file_path, 'w') as file:
for url in urls:
file.write(url + '\n')
# 主程序
if __name__ == '__main__':
sitemap_file_path = 'sitemap.xml'
urls = parse_sitemap(sitemap_file_path)
url_file_path = 'url.txt'
save_urls(urls, url_file_path)
print("URLs have been saved to", url_file_path)
可以本地测试一下,生成提取的URL文件。
提交到搜索引擎
这个可以在百度的搜索后台查看:https://ziyuan.baidu.com/dashboard/index?site=xxx
然后可以用下面的代码来提交自己的页面url。
curl -H 'Content-Type:text/plain' --data-binary @./backup/urls.txt "http://data.zz.baidu.com/urls?site=https://www.xxx.com&token=xxx"