网站搭建好后,需要将网站的所有网址推送给搜索引擎。而且百度搜索引擎不会自动更新内容,有新的内容需要手动更新网址。
当然,百度也提供了自动机制,那需要提交手持身份证照片。
PHP版
百度提供了一个PHP版的模板
1 2 3 4 5 6 7 8 9 10 11 12
| $api = 'http://data.zz.baidu.com/urls?site=https://blog.jackeylea.com&token=yourtoken'; $ch = curl_init(); $options = array( CURLOPT_URL => $api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n", yoururls), CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), ); curl_setopt_array($ch, $options); $result = curl_exec($ch); echo $result;
|
首先要获取地图的所有内容
1 2 3
| $html=file_get_contents('https://blog.jackeylea.com/post-sitemap.xml');
preg_match_all('/<loc>(.+?)<\/loc>/',$html,$match);
|
直接用PHP获取地图的所有内容,然后从里面过滤出网址。
完整PHP代码为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <?php $html=file_get_contents('https://blog.jackeylea.com/post-sitemap.xml');
preg_match_all('/<loc>(.+?)<\/loc>/',$html,$match);
$api = 'http://data.zz.baidu.com/urls?site=https://blog.jackeylea.com&token=yourtoken'; $ch = curl_init(); $options = array( CURLOPT_URL => $api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n", $match[0]), CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), ); curl_setopt_array($ch, $options); $result = curl_exec($ch); echo $result; ?>
|
将内容保存到网站目录下,直接访问这个PHP文件,就会自动提交。
前提是必须要有PHP+curl运行环境。
Python版
原来网站是用Linux+Apache+PHP+WordPress搭建的,现在换成了Hexo,没有PHP环境了,内存占用小很多。
所以有了Python版推送
先获取网页内容,过滤网址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
import requests import re import io
r=requests.get('https://blog.jackeylea.com/sitemap.xml')
urls = re.findall('<loc>(.+?)</loc>', r.text)
f = open("urls.txt","w")
for url in urls: f.write(url+'\n')
f.close()
print("Get all urls done.")
|
获取的所有的网址一行一条保存在urls.txt
中
这里用脚本推送
1 2 3 4 5 6
|
python3 geturls.py curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=https://blog.jackeylea.com&token=yourtoken"
echo '\n'
|
先调用Python脚本获取网址并保存到本地文件,然后用shell读取文件并推送。