百度搜索资源平台链接提交API实战:实时推送新文章
你有没有遇到过这种情况:文章发了一周了,百度还没收录?
我之前就经常遇到。后来发现,问题出在没有主动推送给百度。
百度蜘蛛虽然会主动来爬你的网站,但它不是神仙,不可能时刻盯着你。你发了新文章,最好主动告诉百度一声:"嘿,我更新了,快来抓!"
今天讲讲怎么用百度搜索资源平台的API,实现新文章自动推送。
百度链接提交有哪几种方式?
百度搜索资源平台(以前叫百度站长平台)提供了几种链接提交方式:
1. 主动推送(API推送)
这是最快的方式。你发文章后,立即调用百度的API,把链接推送给它。
优点:最快,几分钟内百度就能收到
缺点:有配额限制,每天最多推多少条(新站配额少,老站配额多)
2. Sitemap提交
你把网站的所有链接整理成一个Sitemap文件,提交给百度。
优点:一次性提交大量链接,适合老站
缺点:百度不会立即抓取,可能要等几天
3. 手动提交
在百度搜索资源平台后台,手动输入链接提交。
优点:没优点,就是手动
缺点:麻烦,只适合临时用
推荐做法:API推送+Sitemap组合使用
新文章用API推送(保证快速收录),老链接放在Sitemap里(让百度慢慢抓)。
怎么申请百度链接提交API?
第一步:登录百度搜索资源平台
用你的百度账号登录,然后添加你的网站(如果还没添加的话)。
第二步:获取推送接口调用地址
进入"链接提交" -> "主动推送",你会看到一个接口调用地址,类似这样:
```
http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx
```
这个地址里有两个重要参数:
- `site`:你的网站域名
- `token`:你的密钥(别泄露给别人)
第三步:测试接口是否可用
你可以用curl测试一下:
```bash
curl -H 'Content-Type:text/plain' -d 'https://www.wushuangbk.com/post/123.html' 'http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx'
```
如果返回类似这样的结果:
```json
{
"success": 1,
"remain": 4999
}
```
说明接口正常。`remain`表示今天还能推送多少条。
用Python写个自动推送脚本
有了接口地址,就可以写脚本自动推送了。
基础版本:推送单个链接
```python
import requests
def push_url(url):
api_url = "http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx"
headers = {"Content-Type": "text/plain"}
response = requests.post(api_url, headers=headers, data=url)
result = response.json()
if "success" in result:
print(f"推送成功!剩余配额:{result['remain']}")
else:
print(f"推送失败:{result}")
用法
push_url("https://www.wushuangbk.com/post/123.html")
```
进阶版本:批量推送
```python
def push_urls(url_list):
api_url = "http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx"
headers = {"Content-Type": "text/plain"}
# 把多个URL用换行符拼接
data = "\n".join(url_list)
response = requests.post(api_url, headers=headers, data=data)
result = response.json()
print(f"成功推送 {result.get('success', 0)} 条")
print(f"今天剩余配额:{result.get('remain', 0)}")
if "not_valid" in result:
print(f"无效的URL:{result['not_valid']}")
用法
urls = [
"https://www.wushuangbk.com/post/123.html",
"https://www.wushuangbk.com/post/124.html",
"https://www.wushuangbk.com/post/125.html",
]
push_urls(urls)
```
接入博客发布流程:发文章时自动推送
如果你用的是Z-Blog或者WordPress,可以写一个插件,在文章发布时自动调用推送接口。
Z-Blog的实现方法
Z-Blog有"模块插件"机制,你可以在文章发布后的钩子函数里调用推送接口。
```php
function push_to_baidu($post) {
$url = $post->Post_Url;
$api_url = "http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
$result = curl_exec($ch);
curl_close($ch);
// 记录日志
file_put_contents("baidu_push.log", date('Y-m-d H:i:s') . " - " . $result . "\n", FILE_APPEND);
}
// 挂载到文章发布钩子
Add_Filter_Plugin('Filter_Post_Update', 'push_to_baidu');
```
WordPress的实现方法
WordPress有`publish_post`钩子,可以在文章发布时执行自定义函数。
```php
function push_to_baidu($post_id) {
$url = get_permalink($post_id);
$api_url = "http://data.zz.baidu.com/urls?site=https://www.wushuangbk.com&token=xxxxxxxx";
$response = wp_remote_post($api_url, array(
'headers' => array('Content-Type' => 'text/plain'),
'body' => $url
));
$result = wp_remote_retrieve_body($response);
error_log("Baidu push result: " . $result);
}
add_action('publish_post', 'push_to_baidu');
```
推送失败的常见原因
原因一:配额用完了
百度给每个网站的推送配额是有限的。新站可能一天只有几十条的配额,老站可能有几千条。
如果返回这样的结果:
```json
{
"error": 400,
"message": "over quota"
}
```
说明配额用完了,明天再推。
原因二:URL格式不对
百度要求推送的URL必须是:
- 完整的URL(包含`http://`或`https://`)
- 已经在你的网站上存在的页面
- 不能是重复推送的(同一个URL一天只能推一次)
原因三:网站没验证
如果你在百度搜索资源平台里没验证网站所有权,接口会返回错误。
原因四:接口地址错了
检查你的接口地址是不是最新的。百度偶尔会更新接口地址,旧地址可能失效。
推送后的效果怎么样?
我自己测试过,用API推送的文章,收录速度明显快于不推送的。
实测数据:
| 推送方式 | 平均收录时间 |
|---|---|
| 不推送 | 7-14天 |
| Sitemap提交 | 3-7天 |
| API推送 | 1-3天 |
当然,这个数据仅供参考。收录速度还跟网站权重、内容质量、更新频率有关。
进阶玩法:用API推送新链接+更新链接
百度的接口不但可以推送新文章,还可以推送"更新过的文章"。
比如你修改了一篇老文章,想让百度重新抓取,就可以把URL再推一次(注意,同一个URL一天只能推一次)。
我自己的做法是:
- 新文章发布时,立即推送
- 老文章大改后,推送一次
- 每天晚上,把当天更新的所有文章URL批量推送一次
这样可以保证百度最快速度发现你的网站变化。
FAQ
Q:推送了就一定会收录吗?
A:不一定。推送只是告诉百度"这个页面存在",至于收不收录,还得看内容质量。如果内容太水,推送了也没用。
Q:一天可以推送多少次?
A:没有次数限制,但有配额限制。比如你一天配额是500条,那你推送500条后就不能再推了。配额每天早上刷新。
Q:推送重复的URL会怎么样?
A:百度会忽略重复的推送,不会报错,但会浪费你的配额。所以别重复推送同一个URL。
Q:API推送和Sitemap提交冲突吗?
A:不冲突。你可以同时使用。事实上,推荐同时使用,API推新文章,Sitemap放老文章。
Q:百度的接口稳定吗?会不会经常挂?
A:还算稳定。我用了两年,只遇到过一次接口维护(大概停了半天)。如果接口挂了,你的文章也不会受影响,只是收录可能慢一点。
推荐阅读
联系方式
有百度收录问题欢迎交流,微信号:15207283116
标签:百度搜索资源平台, API推送, 链接提交
还木有评论哦,快来抢沙发吧~