0
点赞
收藏
分享

微信扫一扫

根据sitemap一键推送给百度收录的python小脚本


背景

之前我发表过一遍Python 5行代码实现主动推送链接给百度–实现快速收录,如果你的博客/网站管理系统支持发布回调的话是很方便使用的,但有很多站点使用的cms或博客管理系统无法实现调用的话,那就使用今天何三给大家分享的根据sitemap一键推送给百度收录的python小脚本吧

思路

  1. 获取站点的sitemap.xml
  2. 解析sitemap中的url链接地址
  3. 组合成数据并推送给百度

实施

1、获取站点的sitemap.xml

我们通过requests库获取

import requests
sitemap_url = 'https://www.h3blog.com/sitemap.xml' #sitemap.xml的链接地址
ret = requests.get(sitemap_url,timeout=3).text
print(ret) # 输出sitemap.xml内容

2、解析sitemap.xml中url链接地址

由于sitemap.xml是xml格式,那么我可以使用python中xml模块,也可以使用正则表达式,由于sitemap.xml比较简单用正则表达式比较方便

import re
re_loc = re.compile('<loc>(.*?)</loc>')
urls = re.findall(re_loc,ret)
print(urls) #输出解析出来的链接列表

3、组合成接口数据并推送给百度

百度资源平台接口如果有多个链接地址是需要用\n分割开的

urls_str = '\n'.join(urls)  #组合数据,使用\n进行分割组合
result = baidu_push_urls('https://www.h3blog.com',urls_str) #调用百度接口
print(result)

完整代码:

import requests
import re

baidu_token = '你的token' #百度资源平台token

#推送百度接口函数
def baidu_push_urls(domain,urls):
headers = {'Content-Type':'text/plain'}
url = 'http://data.zz.baidu.com/urls?site={}&token={}'.format(domain,baidu_token)
ret = requests.post(url,headers=headers, data = urls, timeout=3).text
return ret


def push_sitemap(domain,sitemap_url):
#获取sitemap.xml内容
ret = requests.get(sitemap_url,timeout=3).text

#解析sitemap.xml中的链接地址
re_loc = re.compile('<loc>(.*?)</loc>')
urls = re.findall(re_loc,ret)

#组合数据并调用百度推送接口
urls_str = '\n'.join(urls)
result = baidu_push_urls(domain,urls_str)

print(result) #打印结果

if __name__ == '__main__':
domain = 'https://www.h3blog.com' #修改成你自己的域名
sitemap_url = 'https://www.h3blog.com/sitemap.xml' #修改成你网站的sitemap.xml地址
push_sitemap(domain,sitemap_url)

将上述代码保存成push_sitemap.py 并将参数修改成你自己即可运行

{"remain":99937,"success":34}

返回参数详解请查看 [百度资源平台接口说明](


举报

相关推荐

0 条评论