TOP云在全国各地、港澳台、海外等有丰富节点资源,对于做SEO非常友好,大陆服务器只要域名有备案号就能直接使用,无须重复接入备案,省时省事;港澳台及海外服务器无须备案直接使用,TOP云站群服务器多达256个独立ip,对于做站群的用户很合适,且价格实惠:4核4G 20M 45元/月、8核8G 100M 96元/月,安全稳定,续费同价!如需购买或查看更多配置套餐,请进入网址:https://c.topyun.vip/cart?fid=4&gid=82
在云服务器上使用 Python 脚本批量抓取 SEO 数据,是 SEO 自动化运营的核心技能之一。通过脚本,你可以高效地从多个目标网站(或搜索引擎)获取关键词排名、流量数据、外链情况、页面元信息等 SEO 指标,从而为优化决策提供数据支持。
一、明确目标:你需要抓取哪些 SEO 数据?
在编写脚本之前,先明确具体需要抓取的 SEO 数据类型,常见的包括:
数据类型 | 说明 | 示例 |
---|---|---|
关键词排名 | 目标关键词在搜索引擎中的排名位置 | 关键词 "云服务器" 在 Google 第 3 页 |
搜索流量 | 网站或页面的预估搜索流量 | 某页面月均搜索流量 10,000 |
外链数据 | 网站或页面的外部链接数量和质量 | 某域名外链数 5000+ |
页面元信息 | 页面的 Title、Meta Description、H1 等 | Title: "云服务器评测 - 2024 最佳选择" |
爬虫抓取状态 | 搜索引擎对页面的抓取情况 | 页面是否被收录、是否有抓取错误 |
竞品数据 | 竞争对手网站的 SEO 表现 | 竞品关键词排名、外链来源 |
不同数据来源需要不同的抓取方式(API 或爬虫),下面我们分类讲解。
二、Python 脚本抓取 SEO 数据的核心方法
方法 1:调用 SEO 工具的 API(推荐)
适用场景:获取关键词排名、流量数据、外链等(需注册 SEO 工具账号)。
优点:数据准确、稳定、合法,无需处理反爬机制。
常用 SEO 工具 API:
工具 | 提供的数据 | API 文档 |
---|---|---|
Google Search Console API | 关键词排名、点击率、搜索流量 | 文档 |
Ahrefs API | 外链、关键词排名、域名评级 | 文档 |
SEMrush API | 关键词数据、竞品分析 | 文档 |
Moz API | 域名权威值、外链数据 | 文档 |
Bing Webmaster API | 关键词排名、索引状态 | 文档 |
示例:调用 Google Search Console API 获取关键词数据
import requests
import pandas as pd
# 替换为你的 API 凭据
API_KEY = "YOUR_API_KEY"
SITE_URL = "https://example.com/"
START_DATE = "2024-01-01"
END_DATE = "2024-04-27"
# 构造 API 请求 URL
url = f"https://www.googleapis.com/webmasters/v3/sites/{SITE_URL}/searchAnalytics/query"
params = {
"startDate": START_DATE,
"endDate": END_DATE,
"dimensions": ["query", "page"],
"rowLimit": 1000
}
headers = {"Authorization": f"Bearer {API_KEY}"}
# 发送请求
response = requests.get(url, headers=headers, params=params)
data = response.json()
# 解析数据并保存为 CSV
rows = []
for row in data.get("rows", []):
query = row["keys"][0]
page = row["keys"][1]
clicks = row["clicks"]
impressions = row["impressions"]
ctr = row["ctr"]
position = row["position"]
rows.append([query, page, clicks, impressions, ctr, position])
df = pd.DataFrame(rows, columns=["关键词", "页面", "点击量", "展示量", "CTR", "排名"])
df.to_csv("seo_keywords.csv", index=False)
print("数据已保存到 seo_keywords.csv")
注意:Google API 需要先在 Google Cloud Console 创建项目并启用 API,获取 OAuth 2.0 凭据。
方法 2:编写爬虫抓取公开 SEO 数据
适用场景:抓取竞品网站的元信息、排名、外链等(无官方 API 时)。
优点:灵活,可抓取非结构化数据。
缺点:可能触发反爬机制,需处理动态加载、验证码等问题。
常用爬虫工具:
工具 | 特点 |
---|---|
Requests + BeautifulSoup | 静态页面抓取,简单易用 |
Selenium | 动态页面抓取(如 JavaScript 渲染) |
Scrapy | 高性能爬虫框架,适合大规模抓取 |
Playwright / Puppeteer | 无头浏览器,支持复杂交互 |
示例:用 Requests + BeautifulSoup 抓取页面 Title 和 Meta Description
import requests
from bs4 import BeautifulSoup
def get_seo_meta(url):
try:
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(response.text, "html.parser")
title = soup.title.string if soup.title else "无标题"
meta_desc = soup.find("meta", attrs={"name": "description"})
meta_desc = meta_desc["content"] if meta_desc else "无描述"
return {"URL": url, "Title": title, "Meta Description": meta_desc}
except Exception as e:
print(f"抓取失败: {url}, 错误: {e}")
return {"URL": url, "Title": "错误", "Meta Description": "错误"}
# 批量抓取 URL 列表
urls = ["https://example.com/page1", "https://example.com/page2"]
results = [get_seo_meta(url) for url in urls]
# 保存为 CSV
import pandas as pd
df = pd.DataFrame(results)
df.to_csv("seo_meta.csv", index=False)
print("数据已保存到 seo_meta.csv")
反爬应对策略:
设置随机 User-Agent 和代理 IP;
控制请求频率(如 time.sleep(2));
使用 Selenium 模拟浏览器行为。
方法 3:结合 API 和爬虫(混合模式)
适用场景:部分数据通过 API 获取,部分需爬虫补充。
示例:
用 Ahrefs API 获取外链数据;
用爬虫抓取竞品页面的关键词密度。
三、批量抓取的优化策略
1️⃣ 多线程 / 异步加速
多线程:使用 concurrent.futures.ThreadPoolExecutor 加速爬虫。
异步:使用 aiohttp + asyncio 实现高并发(适合大规模抓取)。
示例:多线程抓取多个 URL
from concurrent.futures import ThreadPoolExecutor
def batch_crawl(urls):
with ThreadPoolExecutor(max_workers=5) as executor:
results = list(executor.map(get_seo_meta, urls))
return results
2️⃣ 数据存储
CSV / Excel:适合小规模数据;
MySQL / PostgreSQL:适合结构化数据存储;
MongoDB:适合非结构化或动态字段数据。
3️⃣ 定时任务
使用 Cron(Linux)或 Task Scheduler(Windows)定时运行脚本;
或用云函数(如 AWS Lambda)实现无服务器定时任务。
四、安全与合规性注意事项
遵守 robots.txt:检查目标网站的 robots.txt 文件,避免抓取禁止的页面。
控制请求频率:避免被封 IP,建议设置延迟(如 time.sleep(3))。
数据隐私:避免抓取用户隐私数据(如 GDPR 相关内容)。
API 限流:遵守 SEO 工具的 API 调用限制(如 Google 每天 25,000 次请求)。
✅ 总结:Python 脚本批量抓取 SEO 数据的核心流程
步骤 | 关键操作 | 工具/技术 |
---|---|---|
明确需求 | 确定需要抓取的数据类型 | Excel / 思维导图 |
选择数据源 | API 或爬虫 | Google API / Ahrefs / 竞品网站 |
编写脚本 | 调用 API 或爬虫抓取 | Requests / BeautifulSoup / Selenium |
数据处理 | 解析和存储数据 | Pandas / MySQL / MongoDB |
优化加速 | 多线程 / 异步 / 定时任务 | ThreadPoolExecutor / Cron |
通过 Python 脚本自动化抓取 SEO 数据,可以大幅提升效率,为站群优化提供数据支撑。但需始终遵循合法、合规、高效的原则,避免过度请求或滥用 API。