%

把排名冲进首页:零基础上手搜索SEO优化平台数据API对接(Python版)

24 . Sep . 2025

联系我们

电话:18824129793(微信同号)13922291058(业务)

分享到:

老板甩下一句话:“我要每天早八点看到关键词排名截图。”手动查?三百个词查到午饭都凉。把数据搬回来最省事的办法,就是直接连上搜索SEO优化平台的API,用Python让机器半夜跑,醒来收表。下面这份笔记把踩坑点都标好了,抄作业就能跑通。

先搞清楚:平台到底给了什么接口

市面上常见的搜索SEO优化平台,无论名字多花哨,对外提供的都是REST风格接口,返回格式清一色JSON。注册账号后,后台会生成三样东西:API域名、用户密钥、套餐配额。先把这三行复制到备忘录,等会儿代码里直接粘贴,少敲一次就少一次手滑。

官方文档通常藏在“开发者中心”里,点进去先看速率限制。大多数平台单IP每分钟六十次,超出就锁你十分钟。提前把频率算进代码,省得半夜被拉黑还找不到原因。

把Python环境一次配到位

Windows、Mac都一样,装官方最新Python,勾选“Add to PATH”,省得后面手动配环境变量。打开终端,pip install requests pandas,这两包足够。requests负责握手,pandas把JSON秒变Excel,老板要看表直接发他。

怕冲突就建个虚拟环境:python -m venv seoapi,激活后装包,干净利索。PyCharm、VS Code随便挑,新建项目时选刚才的venv,自动提示补全,写代码像开挂。

拿钥匙开门:生成签名

平台为了防蹭数据,要求每次请求带签名。套路不复杂:把参数按字母排序,拼接上密钥,做一次MD5。代码十行就能搞定:

import hashlib
def sign(params, secret):

sorted_str = '&'.join([f"{k}={v}" for k, v in sorted(params.items())])

return hashlib.md5(f"{sorted_str}{secret}".encode()).hexdigest()

把函数保存成auth.py,后面所有脚本直接import,改密钥只动一处,维护省大事。

第一次握手:拉一条关键词排名

以某平台为例,接口地址https://api.xxx.com/v1/rank,必填字段:key、keyword、domain、se。se写baidu,返回电脑端排名;写baidu-mobile,返回手机端。上代码:

import requests, auth, json
params = {
"key": "你的key",
"keyword": "Python SEO",
"domain": "example.com",
"se": "baidu"
}
params["sign"] = auth.sign(params, "你的密钥")

resp = requests.get("https://api.xxx.com/v1/rank", params=params, timeout=10)

print(json.dumps(resp.json(), ensure_ascii=False, indent=2))

终端返回里,rank字段就是实时位置,pos 0代表第一名,pos 9代表第十名。没进前十返回null,记得做空值判断,别让脚本崩。

批量查:把三百个词一次性拖回来

单条查询太浪费配额,平台都提供批量接口,最多一百词一包。把关键词扔进txt,一行一个,读文件循环打包:

with open("keywords.txt", encoding="utf-8") as f:

kw_list = [line.strip() for line in f if line.strip()]

chunk_size = 100
for i in range(0, len(kwlist), chunksize):

chunk = kwlist[i:i+chunksize]
params = {
"key": "你的key",
"keywords": ",".join(chunk),
"domain": "example.com",
"se": "baidu"
}
params["sign"] = auth.sign(params, "你的密钥")

resp = requests.get("https://api.xxx.com/v1/rank_batch", params=params, timeout=20)

df = pandas.DataFrame(resp.json()["data"])

df.tocsv(f"rank{i//100}.csv", index=False)

跑完脚本,目录里多出一堆csv,合并后就是完整排名表。配额消耗直接减半,速度翻十倍。

数据清洗:让表格一眼看懂

平台返回的字段多到眼花,保留keyword、rank、rankurl、updatetime四列就够。用pandas一行删除多余列:

df = df[["keyword", "rank", "rankurl", "updatetime"]]

再把null替换成“>50”,老板一眼知道哪些词掉出首页。最后排序,rank升序,前十名自动排前面,截图发群里,气场直接拉满。

定时任务:让电脑半夜自己跑

Windows打开“任务计划程序”,新建触发器,每天六点执行pythonw.exe,参数填脚本绝对路径,勾选“不管用户是否登录”。Linux更简单,crontab -e加一行:

0 6   * /usr/bin/python3 /home/user/rank.py >> /home/user/rank.log 2>&1

日志重定向到文件,出错随时翻,生产环境稳如老狗。

异常处理:别让脚本一言不合就罢工

网络抽风、平台维护,返回码非200是常态。加一层判断:

if resp.status_code != 200:

print(f"接口异常,状态码:{resp.status_code}, 内容:{resp.text}")

time.sleep(60)
continue

再加try包裹JSON解析,解析失败记录原文,方便第二天甩给平台客服。脚本跑通宵,早上收表,心情舒爽。

进阶玩法:把数据喂给可视化看板

排名只是原始食材,炒成菜老板才买单。用pandas按日期聚合,计算环比升降,生成折线图。streamlit搭个网页,三行代码:

pip install streamlit

streamlit run app.py

app.py里读csv,st.linechart(df.groupby("date")["top10count"].sum()),浏览器自动打开,手机也能看。老板开会掏出手机,折线嗖嗖往上,加薪理由自己长腿就跑过来。

常见坑合集

1. 时间戳单位:有的平台要秒,有的要毫秒,差一位签名就错,文档看仔细。2. URL编码:关键词里带空格,sign之前先quote,否则“Python 教程”和“Python教程”算两条签名。3. 配额刷新:不是自然日,是账号注册满二十四小时,别傻等零点。4. 白名单IP:换了Wi-Fi记得后台加新IP,不然返回“权限不足”,查半天还怪代码。

完整脚本模板:复制就能跑

把下面内容存成rank.py,填上三处密钥,双击脚本,排名自动落盘。

import requests, pandas, json, time, auth

KEY = "你的key"
SECRET = "你的密钥"
DOMAIN = "example.com"

def fetchrank(kwlist):

chunk_size = 100
all_data = []
for i in range(0, len(kwlist), chunksize):

chunk = kwlist[i:i+chunksize]

params = {"key": KEY, "keywords": ",".join(chunk), "domain": DOMAIN, "se": "baidu"}

params["sign"] = auth.sign(params, SECRET)
try:
resp = requests.get("https://api.xxx.com/v1/rank_batch", params=params, timeout=20)

if resp.status_code == 200:

all_data.extend(resp.json()["data"])
else:
print(f"异常:{resp.text}")

except Exception as e:

print(f"网络错误:{e}")
time.sleep(1)
df = pandas.DataFrame(all_data)

df = df[["keyword", "rank", "rankurl", "updatetime"]]

df["rank"] = df["rank"].fillna(">50")

df.tocsv(f"rank{int(time.time())}.csv", index=False)

if name == "main":
with open("keywords.txt", encoding="utf-8") as f:

kw_list = [line.strip() for line in f if line.strip()]

fetchrank(kwlist)

收尾:让数据替你上班

搜索SEO优化平台数据API对接,说难其实就两步:把签名算对,把频率控好。脚本跑顺后,每天睁眼就有新鲜排名表,时间省下来做内容、做外链,流量蹭蹭往上爬。别再手工查词,把活交给Python,你负责躺赢。