百度搜索API使用教程:让你的博客SEO效率翻倍

标签:SEO优化,百度搜索,API教程,技术教程

百度搜索API能干啥?

说起来都是泪啊。去年我有个站,文章写了一大堆,结果百度一直不收录。我每天手动去搜索资源平台提交链接,提交到手抽筋。后来才知道有个API接口,可以批量提交,还能查收录状态——早知道不白受那罪了。

百度搜索资源平台(现在叫百度搜索工具箱)其实提供了挺多API接口的,只是大部分人不知道。今天就把我踩过的坑分享出来,让你们少走弯路。

API能帮你做什么?

简单说就是三件事:

第一,URL批量提交。 不用手动一条条扔链接了,可以写个脚本自动提交当天发布的所有文章。我现在每天早上起床,脚本已经跑完了,特爽。

第二,收录查询。 想知道某篇文章被收录没?调用接口查,比site命令准多了。site命令有时候不准,但API返回的数据是实打实的。

第三,流量分析。 关键词排名、点击量这些数据都有接口可以拿,虽然没后台那么详细,但够用了。

准备工作:先拿到你的Token

这一步卡死了不少人,我也是研究半天才搞明白。

1. 登录百度搜索资源平台(没账号的先注册,要验证网站所有权)

2. 进入「用户中心」→「Access Token」

3. 点击「获取Token」,会给你一串字符

这个Token要保管好,别放公开的地方。用代码调用的时候,建议存环境变量里。

Python代码实战:批量提交URL

先安装依赖:

```bash

pip install requests

```

然后是核心代码:

```python

import requests

import json

你的Token

ACCESS_TOKEN = "你的Access_Token"

SITE_URL = "https://www.yourblog.com"

批量提交URL

def batch_submit(urls):

api_url = "https://data.zz.baidu.com/urls?site={}&token={}".format(SITE_URL, ACCESS_TOKEN)

headers = {

"Content-Type": "application/json",

"User-Agent": "curl/7.12.1"

}

data = json.dumps(urls)

response = requests.post(api_url, data=data, headers=headers)

return response.json()

使用示例

urls = [

"https://www.yourblog.com/post/1.html",

"https://www.yourblog.com/post/2.html",

"https://www.yourblog.com/post/3.html"

]

result = batch_submit(urls)

print(result)

```

返回结果大概是这样:

```json

{

"remain": 1000,

"success": 3,

"not_same_site": [],

"not_valid": []

}

```

`remain`是当天还剩多少次提交机会,`success`是成功提交的条数。免费账号每天能提交500条,认证后能到2000条。

收录查询接口怎么用

这个接口可以查指定URL的收录状态,挺实用的:

```python

def check_index(url):

api_url = "https://data.zz.baidu.com/urls?site=你的域名&token=你的Token"

百度搜索API使用教程:让你的博客SEO效率翻倍-第1张图片-无双博客

headers = {"Content-Type": "text/plain"}

response = requests.post(api_url, data=url.encode('utf-8'), headers=headers)

return response.json()

查询单条

result = check_index("https://www.yourblog.com/post/123.html")

print(result)

```

不过这个接口查完会顺便提交一次,不是纯查询。需要注意下每天的配额。

进阶玩法:自动监控脚本

我给自己写了个脚本,每小时跑一次,主要干两件事:

1. 检查最新发布的10篇文章有没有被收录

2. 没收录的自动重新提交

代码有点长,核心逻辑贴一下:

```python

import time

import schedule

def check_and_resubmit():

# 获取最新文章列表(假设你有个函数从数据库拿)

recent_posts = get_recent_posts(10)

for post in recent_posts:

url = post['url']

if not is_indexed(url): # 查收录状态

print(f"文章未收录,准备重提:{url}")

submit_url(url)

else:

print(f"文章已收录:{url}")

print("检查完成,等待下次运行...")

每小时执行一次

schedule.every().hour.do(check_and_resubmit)

while True:

schedule.run_pending()

time.sleep(60)

```

现在我基本不用管收录的事了,脚本自动搞定。写完文章扔进队列,脚本会负责后续所有事。

踩坑记录

说几个我踩过的坑,你们引以为戒:

1. Token过期了不知道

Access Token有效期好像是30天还是多久来着,反正会过期。过期了接口就报401错误。最好写个定时任务检查一下token有效性。

2. 提交频率太高被限流

虽然配额是每天500条,但短时间内请求太频繁会被临时封。我之前测试的时候一秒提交了20条,结果被封了10分钟。

3. URL格式要严格

路径里带中文字符的需要URL编码,不然会报400错误。建议统一用英文slug。

4. 不是所有接口都免费

我上面说的这些基础功能都是免费的,但有些高级接口(比如站点天级收录)要付费,看需求吧。

常见问题

Q: API提交了文章就一定会被收录吗?

A: 不会,提交只是告诉百度「这里有新内容」,收不收录还是要看百度的心情。内容质量、站点权重都是影响因素。

Q: 每天500条的配额够用吗?

A: 日更博客完全够用。如果你批量采集站可能不够,可以考虑认证或者申请天级收录配额。

Q: 报错{"error":401}是什么原因?

A: Token无效或过期了,检查一下Token是否正确,或者重新获取一个。

Q: 能批量查所有文章的收录状态吗?

A: 技术上可以,但没必要。每次查询都会占用提交配额,建议只查最近7天发布的文章。

Q: 有没有现成的工具可以不用写代码?

A: 百度官方有个URL提交工具是网页版的,适合不想写代码的人。但没法批量,也没法自动化。

推荐阅读

1. 百度不收录?7个原因挨个排查

2. 网站TDK优化实战技巧,点击率直接翻倍

3. 博客Sitemap生成与提交全攻略


有更多问题可以加我微信:15207283116,看到会回复。