百度天极接口
百度搜索资源平台-移动专区提供了天极快速收录推送接口
天极推送要求:
- 账号与原创保护、优站扶植不共享提交配额,请您进行区别后分开提交;在原创保护、优站扶植提交过的数据无需再次在数据入口提交。
- 通过天级收录接口,提交站内内容链接,享受天级抓取校验、快速展现优待。
- 仅限提交绑定站点下的内容,否则无法成功提交,配额不可累计,当日有效。
- 若链接存在跳转关系,请直接提交跳转后链接。如网站换域名,需提交新域名资源;进行HTTPS改造页面,请提交HTTPS资源。
接口地址:http://data.zz.baidu.com/urls? appid=xxx& token=xxxx& type=realtime
appid
与token
要换成你自己的
实现思路
- 调用网站sitemap.xml并解析出所有的url
- 循环调用天极收录推送接口并将url推送过去
- 推送成功则记录下到文件中
- 推送失败停止推送并打印失败原因
python 代码实现
import requests
import re
import json
push_log_path = './push_log.txt'
def get_sitemap_urls():
ret = requests.get('http://xs.h3blog.com/sitemap.xml').text
#解析sitemap.xml中的链接地址
re_loc = re.compile('<loc>(.*?)</loc>')
urls = re.findall(re_loc,ret)
return urls
def get_pushd_urls():
with open(push_log_path) as f:
content = f.read()
urls = str(content).split('\n')
return list(filter(lambda x : x, urls))
def get_no_push_urls(num=20):
all_urls = get_sitemap_urls()
pushed_urls = get_pushd_urls()
urls = []
for url in all_urls :
if url in pushed_urls:
continue
if len(urls) == num :
break
urls.append(url)
#返回urls
return urls
def tianji_push(urls):
'''
天极推送
'''
headers = {'Content-Type':'text/plain'}
api = 'http://data.zz.baidu.com/urls?appid=xxx&token=xxxx&type=realtime'
ret = requests.post(api,headers=headers, data = urls, timeout=3).text
return ret
def write_to_log(url):
'''
写入文件
'''
with open(push_log_path,'a+') as f:
f.write(url)
if __name__ == "__main__":
urls = get_no_push_urls(30)
for url in urls:
ret = tianji_push(url)
print(url,ret)
data = json.loads(ret)
success_realtime = data['success_realtime']
if success_realtime > 0 :
write_to_log(url)
print(url,'推送成功')
else:
print(url,'推送失败')
break
print('推送完成')