谷歌移动端搜索结果采集教程:一个参数看PC和手机排名的区别(附代码)

做 SEO 的同学都知道一个反直觉的事实:同一个关键词,在电脑和手机上搜,排名可能完全不同。移动端流量占了大多数,但很多人做排名监控只盯 PC 结果。这篇教大家用谷歌搜索 API 的 device 参数采集移动端结果,对比 PC 和手机排名差异,代码可直接复制。

为什么要单独看移动端结果

  • 谷歌对移动端和桌面端使用不同的索引和排名逻辑
  • 移动端结果里,本地包(Local Pack)、应用结果出现的比例更高
  • 你的网站 PC 排第 3,移动端可能排第 8——只看 PC 会误判
  • 移动端是大多数行业的流量主力

所以做排名监控、SEO 分析,PC 和移动端结果要分开看、分开记录。

device 参数是什么

SerpBase(官网 serpbase.dev)的 /google/search 端点有个 device 参数:

  • default:自动路由(默认值)
  • pc:桌面端会话
  • mobile:移动端会话

同一个 q,换一下 device,返回的就是对应端的排名结果。

第一步:分别抓 PC 和移动端结果

import requests

API_KEY = "在这里填你的Key"
URL = "https://api.serpbase.dev/google/search"

def search(keyword, device="default", hl="zh-cn", gl="cn"):
    resp = requests.post(
        URL,
        headers={"Content-Type": "application/json", "X-API-Key": API_KEY},
        json={"q": keyword, "hl": hl, "gl": gl, "device": device},
        timeout=30,
    )
    return resp.json().get("organic", [])

# 同一个词,两种端各抓一次
keyword = "SEO 工具"
pc_results = search(keyword, "pc")
mobile_results = search(keyword, "mobile")

print("PC 端前 5:")
for r in pc_results[:5]:
    print(f"  {r.get('rank')}. {r.get('title')} | {r.get('link')}")

print("移动端前 5:")
for r in mobile_results[:5]:
    print(f"  {r.get('rank')}. {r.get('title')} | {r.get('link')}")

第二步:对比两端排名差异

把两端结果按 URL 对齐,找出差异最大的:

def rank_map(results):
    return {r.get("link"): r.get("rank") for r in results}

pc_map = rank_map(pc_results)
mobile_map = rank_map(mobile_results)

print("\n两端排名对比(只显示差异):")
all_urls = set(pc_map) | set(mobile_map)
for url in all_urls:
    pc_rank = pc_map.get(url, "未上榜")
    mob_rank = mobile_map.get(url, "未上榜")
    if pc_rank != mob_rank:
        print(f"  {pc_rank} (PC) -> {mob_rank} (移动) | {url}")

这个对比表就是「移动端适配评估」的基础数据——哪些词移动端掉得厉害,一眼可见。

第三步:批量监控两端排名

把 device 也纳入排名监控的维度,记录每天的 PC 和移动排名:

import sqlite3
import datetime

con = sqlite3.connect("rank.db")
con.execute("""CREATE TABLE IF NOT EXISTS rank_by_device (
    keyword TEXT, day TEXT, device TEXT, position INTEGER,
    PRIMARY KEY (keyword, day, device)
)""")

keywords = ["SEO 工具", "搜索 API", "谷歌搜索数据"]
for kw in keywords:
    for device in ("pc", "mobile"):
        results = search(kw, device)
        # 假设监控自己的域名 yourdomain.com
        pos = next(
            (r["rank"] for r in results if "yourdomain.com" in r.get("link", "")),
            None,
        )
        con.execute(
            "INSERT OR REPLACE INTO rank_by_device VALUES (?, ?, ?, ?)",
            (kw, datetime.date.today().isoformat(), device, pos),
        )
    print(f"{kw} 完成")

con.commit()
print("两端排名已落库")

这样每天都有 PC 和移动两条排名记录,趋势对比随时可查。

费用与建议

  • /google/search 每次 1 credits,一个词两端各查一次 = 2 credits
  • 注册送 100 次免费搜索,够验证完整流程
  • 标准包 $10 买 2 万次($0.50/千次),永不过期
  • 建议先把「哪些词两端差异大」筛出来,只对重点词做持续监控

常见问题

Q:device 不加会怎样?
A:默认 default,自动路由。想稳定对比两端,建议显式传 pc / mobile

Q:移动端结果里会有额外模块吗?
A:可能。移动端 SERP 的本地包、相关结果占比更高,这些模块在返回里也会出现(如 local_pack 相关结构),字段用 .get() 兜底即可。

Q:这个能用来做移动端 SEO 吗?
A:可以,移动端排名数据就是移动端 SEO 的基础,配合两端对比能定位「适配问题导致掉排名」的页面。

结语

移动端排名不该是「偶尔看一眼」的数据,而该是排名监控的标配维度。一个 device 参数,把 PC 和移动端的对比从「手动切设备」变成「脚本批量跑」。给你的监控加上移动端,比你想的更简单。

完整参数见 SerpBase 官方文档。先跑第一步,看看你的核心词在两端排名差多少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值