百度天极接口

百度搜索资源平台-移动专区提供了天极快速收录推送接口

天极推送要求

  • 账号与原创保护、优站扶植不共享提交配额,请您进行区别后分开提交;在原创保护、优站扶植提交过的数据无需再次在数据入口提交。
  • 通过天级收录接口,提交站内内容链接,享受天级抓取校验、快速展现优待。
  • 仅限提交绑定站点下的内容,否则无法成功提交,配额不可累计,当日有效。
  • 若链接存在跳转关系,请直接提交跳转后链接。如网站换域名,需提交新域名资源;进行HTTPS改造页面,请提交HTTPS资源。

接口地址:http://data.zz.baidu.com/urls? appid=xxx& token=xxxx& type=realtime

appidtoken要换成你自己的

实现思路

  1. 调用网站sitemap.xml并解析出所有的url
  2. 循环调用天极收录推送接口并将url推送过去
  3. 推送成功则记录下到文件中
  4. 推送失败停止推送并打印失败原因

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('推送完成')

python 5行代码实现主动推送链接给百度--实现快速收录