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)