寫在前面:
下面是鏈接提交方式的對比:
如何選擇鏈接提交方式
1、主動推送:最為快速的提交方式,推薦您將站點(diǎn)當(dāng)天新產(chǎn)出鏈接立即通過此方式推送給百度,以保證新鏈接可以及時被百度收錄。
2、自動推送:最為便捷的提交方式,請將自動推送的JS代碼部署在站點(diǎn)的每一個頁面源代碼中,部署代碼的頁面在每次被瀏覽時,鏈接會被自動推送給百度??梢耘c主動推送配合使用。
3、sitemap:您可以定期將網(wǎng)站鏈接放到sitemap中,然后將sitemap提交給百度。百度會周期性的抓取檢查您提交的sitemap,對其中的鏈接進(jìn)行處理,但收錄速度慢于主動推送。
4、手動提交:一次性提交鏈接給百度,可以使用此種方式。
來自百度站長>>
原創(chuàng)文章,轉(zhuǎn)發(fā)請注明!
訪問接口實(shí)現(xiàn)主動提交
使用Post請求,通過配置site和token將包含你需要提交的鏈接的數(shù)組提交到百度提供的接口!
示例代碼(這里實(shí)現(xiàn)了php的和python的):
php:
說明:此方法適合能夠自動構(gòu)建sitemap的情況,未設(shè)置的請移步>>
自動構(gòu)建>>
只要保證你的博客根目錄的sitemap.xml和baidusitemap.xml能夠訪問就好!
如未實(shí)現(xiàn)自動構(gòu)建sitemap,需要本地手動生成之后添加到source文件夾下!不過每次添加新文章都需要從新上傳!
將下面腳本保存成baidusitemapPush.php(名字隨便起,注意跟后面對應(yīng)就好!)
<?php
//從博客根目錄加載百度站點(diǎn)地圖
$xmlfile = './baidusitemap.xml';
//解析站點(diǎn)地圖,并將所有站點(diǎn)鏈接存入數(shù)組$locs
$xml = simplexml_load_file($xmlfile);
$locs = [];
foreach ($xml->url as $child) {
array_push($locs,$child->loc->__toString());
}
//調(diào)用百度主動推送接口,將baidusitemap.xml中所有的站點(diǎn)鏈接提交
//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的請嚴(yán)格復(fù)制下面代碼,否則你就需要一把游標(biāo)卡尺~~~
保存成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文件,得到所有站點(diǎn)鏈接
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的地址>>
可以參考這里>>
這里配置自動構(gòu)建的flow項(xiàng)目需要綁定你的博客對應(yīng)的倉庫,而非源碼倉庫;
配置環(huán)境選擇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 $?
檢測構(gòu)建:
push一下博客或者手動更新博客倉庫的文件,觸發(fā)自動構(gòu)建,理想情況下是這樣子:

這樣子以后每次更新文章都會觸發(fā)一次主動推送!
任何問題,歡迎交流!