sitemap.xml文件是严格按照xml语言编写的网站地图,用来引导搜索蜘蛛对本站点文章等内容的索引,它是由google提出来的概念。
链接提交
使用说明
xml文件格式:
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://www.zhongzemin.cn/</loc>
<lastmod>2019-04-09</lastmod>
</url>
<url>
<loc>...</loc>
<lastmod>2019-04-09</lastmod>
</url>
...
...
那么,我们应用python如何制作sitemap.xml格式文件呢?
制作思路:
第一步:爬取所有url链接
第二步:统计去重
第三步:制作xml格式文件
第四步:导出文件/保存文件
这里我测试了 set 和 list,大家可以对比参照一下!
去重是使用set()
完整源码:
#XML格式地图制作
#20200313 by 微信:huguo00289
# -*- coding: UTF-8 -*-
import requests,re,time
#获取页面上的所有链接
def get_urllist(url):
lilist=[]
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
}
html=requests.get(url,headers=headers).content.decode('utf-8')
ure=r'href="(.+?)"'
urllist=re.findall(ure,html,re.S)
print(len(urllist))
print(urllist)
for li in urllist:
if ".html" in li:
if "www." in li:
if "?" not in li:
print(li)
lilist.append(li)
print(len(lilist))
lilist=set(lilist) #去重,run1开启,run2不开启
print(len(lilist))
return lilist
#xml格式制作
def xmlzz(urllist):
xmlwj='<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">\n'
xmlg=""
for url in urllist:
xmlgs=f'<url>\n<loc>{url}</loc>\n<lastmod>{time.strftime("%Y-%m-%d", time.localtime())}</lastmod>\n</url>\n'
xmlg="%s%s"%(xmlg,xmlgs)
#print(xmlg)
xmlwj="%s%s%s"%(xmlwj,xmlg,"</urlset>")
print(xmlwj)
return xmlwj
#保存文件
def bc(sj):
with open("sitemap.xml",'w',encoding='utf-8') as f:
f.write(sj)
print(">>>保存文件网站地图成功!")
def run1(url):
hreflist = set()
url = "https://www.pinsuoedu.com"
lilist = get_urllist(url)
for li in lilist:
lis = get_urllist(li)
hreflist = hreflist.union(lis) # 求并集
print(len(hreflist))
hreflist = hreflist.union(lilist)
print(len(hreflist))
hreflist.add(url)
print("_" * 50)
print(hreflist)
print("_" * 50)
print(len(hreflist)) #465
sj=xmlzz(hreflist)
bc(sj)
def run2(url):
hreflist =[]
lilist = get_urllist(url)
for li in lilist:
lis = get_urllist(li)
hreflist.extend(lis) # 求并集
print(len(hreflist))
hreflist.append(url)
print("_" * 50)
print(len(hreflist))
hreflist=set(hreflist)
print("_" * 50)
print(len(hreflist))
if __name__=='__main__':
url="https://www.zhongzemin.cn/"
run1(url)
本文分享自 Python与SEO学习 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!