背景
之前我发表过一遍<Python 5行代码实现主动推送链接给百度--实现快速收录>,如果你的博客/网站管理系统支持发布回调的话是很方便使用的,但有很多站点使用的cms或博客管理系统无法实现调用的话,那就使用今天何三给大家分享的根据sitemap一键推送给百度收录的python小脚本吧
思路
- 获取站点的sitemap.xml
- 解析sitemap中的url链接地址
- 组合成数据并推送给百度
实施
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}
返回参数详解请查看 百度资源平台接口说明