Hexo站點(diǎn)主動推送百度-基于Flow.ci

寫在前面:

下面是鏈接提交方式的對比:

如何選擇鏈接提交方式
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ā)一次主動推送!

任何問題,歡迎交流!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容