巧用python代码生成网站sitemap地图
引言如下:
在互联网的世界里,拥有一个清晰、易于导航的网站地图(sitemap)对于网站的成功至关重要。
网站地图不仅有助于用户更好地了解网站结构,还能极大地提升搜索引擎优化(SEO)
因为它为搜索引擎爬虫提供了发现和索引页面的有效途径。
通过提供一个全面且更新及时的网站地图,我们可以确保搜索引擎能够快速找到网站上的新内容或更改过的内容,
从而提高网站在搜索结果中的可见性。
代码特色:
我将结合Python标准库xml.etree.ElementTree来构建XML文档,并介绍如何根据需要添加网页URL、最后修改时间、更新频率和优先级等信息。此外,我们还会简要探讨如何抓取网站内容以动态生成包含所有重要页面的网站地图,这对于大型或经常更新的网站尤为有用。
代码展示图
代码展示图(二)
完整代码如下
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse
import os
class SitemapGenerator:
def __init__(self, base_url):
self.base_url = base_url
self.visited_urls = set()
self.sitemap = []
def is_valid_url(self, url):
parsed = urlparse(url)
return bool(parsed.netloc) and bool(parsed.scheme)
def get_all_links(self, url):
try:
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
for a_tag in soup.find_all("a", href=True):
href = a_tag.attrs['href']
full_url = urljoin(url, href)
if self.is_valid_url(full_url) and self.base_url in full_url:
yield full_url
except requests.RequestException as e:
print(f"Error fetching {url}: {e}")
def crawl(self, url):
if url in self.visited_urls:
return
print(f"Crawling: {url}")
self.visited_urls.add(url)
self.sitemap.append(url)
for link in self.get_all_links(url):
self.crawl(link)
def generate_sitemap(self, output_file='sitemap.txt'):
with open(output_file, 'w') as f:
for url in self.sitemap:
f.write(url + '\n')
print(f"Sitemap saved to {output_file}")
if __name__ == "__main__":
base_url = "" # 替换为你要爬取的网站URL
sitemap_generator = SitemapGenerator(base_url)
sitemap_generator.crawl(base_url)
sitemap_generator.generate_sitemap()最后会生成文件至当前目录下的sitemap





