Python与seo的应用,sitemap.xml文件制作工具源码

sitemap.xml文件是严格按照xml语言编写的网站地图,用来引导搜索蜘蛛对本站点文章等内容的索引,它是由google提出来的概念。

pic_001.png

链接提交 

使用说明

链接提交工具是网站主动向百度搜索推送数据的工具,本工具可缩短爬虫发现网站链接时间,网站时效性内容建议使用链接提交工具,实时向搜索推送数据。本工具可加快爬虫抓取速度,无法解决网站内容是否收录问题

百度搜索资源平台为站长提供链接提交通道,您可以提交想被百度收录的链接,百度搜索引擎会按照标准处理,但不保证一定能够收录您提交的链接。

pic_002.png

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)