程序员

Hexo站点主动推送百度-基于Flow.ci

2016-12-19  本文已影响593人  小矮人Ethan

写在前面:

下面是链接提交方式的对比:

如何选择链接提交方式
1、主动推送:最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
2、自动推送:最为便捷的提交方式,请将自动推送的JS代码部署在站点的每一个页面源代码中,部署代码的页面在每次被浏览时,链接会被自动推送给百度。可以与主动推送配合使用。
3、sitemap:您可以定期将网站链接放到sitemap中,然后将sitemap提交给百度。百度会周期性的抓取检查您提交的sitemap,对其中的链接进行处理,但收录速度慢于主动推送。
4、手动提交:一次性提交链接给百度,可以使用此种方式。
来自百度站长>>

原创文章,转发请注明!

访问接口实现主动提交

使用Post请求,通过配置site和token将包含你需要提交的链接的数组提交到百度提供的接口!
示例代码(这里实现了php的和python的):

php:

说明:此方法适合能够自动构建sitemap的情况,未设置的请移步>>
自动构建>>
只要保证你的博客根目录的sitemap.xml和baidusitemap.xml能够访问就好!
如未实现自动构建sitemap,需要本地手动生成之后添加到source文件夹下!不过每次添加新文章都需要从新上传!
将下面脚本保存成baidusitemapPush.php(名字随便起,注意跟后面对应就好!)

<?php

//从博客根目录加载百度站点地图
$xmlfile = './baidusitemap.xml';

//解析站点地图,并将所有站点链接存入数组$locs
$xml = simplexml_load_file($xmlfile);
$locs = [];
foreach ($xml->url as $child) {
  array_push($locs,$child->loc->__toString());
}

//调用百度主动推送接口,将baidusitemap.xml中所有的站点链接提交
//site和token请换成你自己的
$api = 'http://data.zz.baidu.com/urls?site=www.yoursite.com&token=yourtoken';
$ch = curl_init();
$options =  array(
    CURLOPT_URL => $api,
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => implode("\n", $locs),
    CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
//echo $result;
print_r($result);

?>

python:

python请轻喷啊,写得很low!如果使用python的请严格复制下面代码,否则你就需要一把游标卡尺~~~
保存成baidusitemapPush.py文件

# !/usr/bin/python
# -*- coding: UTF-8 -*-


import requests
from xml.dom.minidom import parse
import xml.dom.minidom

# 加载xml文件
DOMTree = xml.dom.minidom.parse("./baidusitemap.xml")
data0 = DOMTree.getElementsByTagName("loc")
list_len = len(data0)
payload = []
data2 = []

# 遍历xml文件,得到所有站点链接
for i in range(0, list_len, 1):
    data1 = data0[i].firstChild.data
    data2.append(data1)

payload = str(data2)
url = "http://data.zz.baidu.com/urls"
querystring = {"site":"www.oneonecity.xyz","token":"yourtoken"}
headers = {
    'content-type': "text/plain",
    'cache-control': "no-cache",
    }

# 请求百度主动推送接口
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)

上传脚本:

将上面的php或者python脚本上传一个就好,放在hexo-->source文件夹下面;然后上传!

git add .

git commit -am "添加百度主动推送脚本"

git push origin master

配置flow.ci

说明:

flow的地址>>
可以参考这里>>
这里配置自动构建的flow项目需要绑定你的博客对应的仓库,而非源码仓库;
配置环境选择php或者python,这取决于你之前上传的那个脚本!

百度主动推送
自定义脚本:
flow_cmd "php baidusitemapPush.php" --echo --assert
flow_cmd "php sitemapPush.php" --echo --assert
flow_cmd "php baiduPush_index.php" --echo --assert
flow_result $?

检测构建:

push一下博客或者手动更新博客仓库的文件,触发自动构建,理想情况下是这样子:


百度主动推送

这样子以后每次更新文章都会触发一次主动推送!

任何问题,欢迎交流!

上一篇下一篇

猜你喜欢

热点阅读