SE::Google::KeywordPlanner::Ideas - Google Keyword Planner 关键词建议爬虫工具

爬虫工具概览
SE::Google::KeywordPlanner::Ideas – 从 Google Keyword Planner 数据抓取关键词变体和建议。可获取多种数据:抓取建议列表、评估关键词竞争程度、采集月均查询量、最低和最高出价、搜索相似主题的新关键词。在数据抓取设置中,您可以指定语言、地区、位置和数据采样周期。还支持批量模式,通过该模式,向服务发送一次请求即可同时获取 20 个关键词的数据,从而显著加快数据抓取速度。得益于 A-Parser 的多线程工作,请求处理速度可以达到每分钟数千个请求。
A-Parser 的功能允许保存 SE::Google::KeywordPlanner::Ideas 爬虫工具的数据抓取设置以便后续使用(预设),设置数据抓取计划等等。
由于内置了强大的模板引擎 Template Toolkit,可以将结果保存为您需要的任何形式和结构,该引擎允许对结果应用额外的逻辑,并以各种格式输出数据,包括 JSON、SQL 和 CSV。
采集的数据
- 所查关键词的月平均搜索量
- 建议列表
- 关键词变体
- 月平均搜索量
- 竞争程度
- 最低和最高出价
- 每个获取变体的趋势
功能
- 支持通过登录名-密码或通过替换 Cookie 和请求头进行身份验证
- 确定 $volume 的精确度 - 精确值/四舍五入值
- 支持批量模式,详见 Queries (查询) 章节
- 支持多账号(为了选择所需的账号,必须指定其
ocid(uscid)) - 按月抓取指定时间段内每个关键词的搜索量数据 (
$ideas.$i.trends)。数据以 JSON 格式呈现,其输出到结果的示例见下方截图:
剧透:截图

模板:
[% FOREACH item IN ideas;
trends = tools.parseJSON(item.trends);
item.keyword _ "\n";
trends.format('$month: $volume\n');
"----\n";
END %]
应用场景
- 抓取建议列表
- 评估关键词竞争程度
- 采集月平均搜索量、最低和最高出价
- 寻找相关主题的新关键词
设置
有两种设置爬虫工具的方法:
- 指定 Keyword Planner 账号的电子邮件\密码
- 在浏览器中登录并复制所需的值
请谨慎对待线程数。建议指定较少的线程数,同时完全可以在不使用代理的情况下进行数据抓取。
通过邮箱和密码身份验证
需要覆盖 E-mail 和 Password 选项,指定您 Keyword Planner 账号的数据。账号中必须已创建广告系列。
剧透:(解决方案) Login failed TypeError: Cannot read property '1' of null
如果出现此错误,您需要从浏览器中删除您的 Google 账号并重新登录。

在浏览器中身份验证并将请求头代入爬虫工具
需要在浏览器中通过链接 https://ads.google.com/aw/keywordplanner/home 进行身份验证,如果之前没有,请创建第一个广告系列,获取以下数据并在爬虫工具设置中指定它们:
可以通过两种方式指定 Cookie:
- 在 All cookies 选项中指定所有 Cookie
- 为 __Secure-3PSID、__Secure-3PSIDTS 选项指定 Cookie 中的值(如果账号上的 authuser 等于 0,则需要指定 __Secure-3PSIDTS)
其他请求头:
- x-framework-xsrf-token 请求头的值
- URL 中的 ocid 或 uscid 参数值
- URL 中的 authuser 参数值
剧透:如何找到必要参数


查询
根据 Query type 参数的值,查询可以有不同的形式。下面列出了可能的选项,展示了示例并描述了所获结果的特点。
Keyword
查询应为关键词形式,每行一个关键词。查询示例:
test
爬虫工具
Windows 11
如何种树
支持 批量模式,通过 Bulk (packet) mode 选项激活。在此模式下,爬虫工具在向服务发送请求时将发送每包 20 个关键词,因此填充结果的逻辑会发生变化:
- 将为每个关键词填充
$volume $ideas和$suggests将仅为第一个关键词填充,但这些数组中将包含该包中使用的所有关键词的总结果
Site + keyword
查询应为网站形式,后跟空格和关键词。查询示例:
speedtest.com Network speed
a-parser.com parser
也支持 批量模式,使用时需要用逗号分隔关键词,例如:
4pda.to android,ios,固件
google.com google,ads,广告,互联网网站搜索
- 此类查询在批量模式下不抓取
$volume
Entire site
查询应指定域名,每行一个。例如:
apple.com
microsoft.com
- 此类查询不抓取
$volume
URL
查询应指定链接,每行一个。例如:
https://a-parser.com/docs/parsers/se-google-keywordplanner
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics
- 此类查询不抓取
$volume
查询替换
您可以使用 内置宏 自动从文件中替换子查询,例如我们想为每个查询添加一些其他单词列表,指定几个主要查询:
fantasy
tower defense
rpg
在查询格式中指定从文件 keywords.txt 替换额外单词的宏,此方法允许成倍增加查询的多样性:
{subs:keywords} $query
该宏将为每个原始搜索查询创建与文件中相同数量的额外查询,宏运行结果总计为 [原始查询数量] x [Keywords 文件中的查询数量] = [总查询数量]。
例如,如果 keywords.txt 文件包含:
free
online
最终替换宏将把 3 个主要查询变为 6 个:
free fantasy
online fantasy
free tower defense
online tower defense
free rpg
online rpg
结果输出示例
得益于内置的 Template Toolkit 模板引擎,A-Parser 支持灵活的结果格式化,允许其以任意形式以及结构化形式(如 CSV 或 JSON)输出结果。
默认输出
结果格式:
$ideas.format('$keyword\n')
结果示例:
coca cola
iphone 11 pro
winter
iphone 11 pro max
winter season
iphone11
iphone 11 price
apple iphone 11
iphone 11pro
coke
11 pro max
iphone 11 pro price
iphone 11 max
iphone pro max
iphone 11 128gb
11 pro
iphone 11 pro max price
apple iphone 11 pro
apple iphone 11 pro max
new iphone 11
iphone 11 max pro
apple 11 pro
iphone 11 deals
iphone 11 pro max 256gb
diet coke
first day of winter
iphone 11 pro 256gb
coke zero
iphone pro 11
apple 11 pro max
输出到 CSV 表格
结果格式:
[% FOREACH i IN ideas;
tools.CSVline(i.keyword, i.volume, i.min_bid, i.max_bid);
END %]
文件名:
$datefile.format().csv
起始文本:
Keyword,Volume,"Min bid","Max bid"
在结果格式中应用 Template Toolkit 模板引擎 以在 FOREACH 循环中输出 $ideas 数组。
在结果文件名中,只需将文件扩展名更改为 csv。
为了使“Prepend text”选项在任务编辑器中可用,需要激活“More options”。 在“Prepend text”中通过逗号记录列名,并将第二行留空。
以 SQL 格式保存
结果格式:
[% FOREACH ideas;
"INSERT INTO ideas VALUES('" _ keyword _ "', '" _ volume _ "')\n";
END %]
结果示例:
INSERT INTO ideas VALUES('香水', '50000')
INSERT INTO ideas VALUES('eyfel perfume', '5000')
INSERT INTO ideas VALUES('memo marfa', '5000')
INSERT INTO ideas VALUES('duxi', '5000')
INSERT INTO ideas VALUES('kenzo intense', '5000')
INSERT INTO ideas VALUES('climat lancome', '5000')
INSERT INTO ideas VALUES('v canto', '5000')
INSERT INTO ideas VALUES('majda bekkali', '5000')
INSERT INTO ideas VALUES('v canto ricina', '500')
INSERT INTO ideas VALUES('v canto stramonio', '5000')
INSERT INTO ideas VALUES('terenzi kirke', '500')
INSERT INTO ideas VALUES('duhi', '500')
INSERT INTO ideas VALUES('max mara le parfum', '500')
INSERT INTO ideas VALUES('stramonio v canto', '500')
INSERT INTO ideas VALUES('sheikh parfum', '500')
INSERT INTO ideas VALUES('jacques zolty', '500')
INSERT INTO ideas VALUES('aj arabia', '500')
INSERT INTO ideas VALUES('christian lacroix bazar', '500')
INSERT INTO ideas VALUES('juliette has a gun romantina', '500')
INSERT INTO ideas VALUES('vilhelm parfumerie mango skin', '500')
INSERT INTO ideas VALUES('v canto mirabile', '500')
INSERT INTO ideas VALUES('donna karan dkny be delicious', '500')
INSERT INTO ideas VALUES('arteolfatto', '500')
INSERT INTO ideas VALUES('aquawoman rochas', '500')
INSERT INTO ideas VALUES('angel and demon givenchy', '500')
INSERT INTO ideas VALUES('venenum kiss', '500')
INSERT INTO ideas VALUES('v canto mandragola', '500')
INSERT INTO ideas VALUES('angel demon givenchy', '500')
INSERT INTO ideas VALUES('hugo boss boss ma vie pour femme', '500')
INSERT INTO ideas VALUES('nina ricci mademoiselle ricci', '500')
将结果转储为 JSON
通用结果格式:
[% data = [];
FOREACH p1.ideas;
item = {};
item.keyword = keyword;
item.volume = volume;
data.push(item);
END %]$data.json\n
结果示例:
[{"keyword":"香水","volume":"50000"},{"keyword":"eyfel perfume","volume":"5000"},{"keyword":"memo marfa","volume":"5000"},{"keyword":"duxi","volume":"5000"},{"keyword":"kenzo intense","volume":"5000"},{"keyword":"climat lancome","volume":"5000"},{"keyword":"v canto","volume":"5000"},{"keyword":"majda bekkali","volume":"5000"},{"keyword":"v canto ricina","volume":"500"},{"keyword":"v canto stramonio","volume":"5000"},{"keyword":"terenzi kirke","volume":"500"},{"keyword":"duhi","volume":"500"},{"keyword":"max mara le parfum","volume":"500"},{"keyword":"stramonio v canto","volume":"500"},{"keyword":"sheikh parfum","volume":"500"},{"keyword":"jacques zolty","volume":"500"},{"keyword":"aj arabia","volume":"500"},{"keyword":"christian lacroix bazar","volume":"500"},{"keyword":"juliette has a gun romantina","volume":"500"},{"keyword":"vilhelm parfumerie mango skin","volume":"500"},{"keyword":"v canto mirabile","volume":"500"},{"keyword":"donna karan dkny be delicious","volume":"500"},{"keyword":"arteolfatto","volume":"500"},{"keyword":"aquawoman rochas","volume":"500"},{"keyword":"angel and demon givenchy","volume":"500"},{"keyword":"venenum kiss","volume":"500"},{"keyword":"v canto mandragola","volume":"500"},{"keyword":"angel demon givenchy","volume":"500"},{"keyword":"hugo boss boss ma vie pour femme","volume":"500"},{"keyword":"nina ricci mademoiselle ricci","volume":"500"},{"keyword":"mmmm juliette has a gun","volume":"500"},{"keyword":"v canto lucrethia","volume":"500"},{"keyword":"mango skin vilhelm parfumerie","volume":"500"},{"keyword":"dalissime salvador dali","volume":"500"},{"keyword":"molecula 02","volume":"50000"},{"keyword":"lucia parfum","volume":"500"},{"keyword":"boadicea pure narcotic","volume":"500"},{"keyword":"terenzi andromeda","volume":"500"}]
有关将结果输出为 JSON 的更多细节在 这篇文章 中有描述。
可能的设置
| 参数 | 默认值 | 描述 |
|---|---|---|
| All cookies | 指定所有 Cookie | |
| Cookie "__Secure-3PSID" | Cookie "__Secure-3PSID" | |
| Cookie "__Secure-3PSIDTS" | Cookie "__Secure-3PSIDTS" | |
| Header "x-framework-xsrf-token" | 请求头 "x-framework-xsrf-token" | |
| Url parameter "ocid"("uscid") | 参数 "ocid"("uscid") | |
| Url parameter "authuser" | 0 | 参数 "authuser" |
| 用于 Keyword Planner 身份验证的 E-mail | ||
| Password | 用于 Keyword Planner 身份验证的密码 | |
| Recovery e-mail | 用于恢复访问权限的 E-mail | |
| Browser headless (debug auth) | ☑ | 用于通过登录名-密码身份验证的浏览器的无头模式 |
| Log Login Screenshot (debug auth) | ☐ | 创建身份验证页面的截图并将其输出到任务日志 |
| Date from | Last 12 months | 起始日期 |
| Date to | Last 12 months | 截止日期 |
| Language | English | 语言 |
| Search networks | Google | 搜索网络 |
| Currency | USD | 货币 |
| Location code | 地点(此处需指定地点 ID,可从此表(副本)的第一列获取) | |
| Query type | Keyword | 查询类型 |
| Exclude brand names in results | ☐ | 品牌过滤器 |
| Exclude adult ideas | ☑ | 成人内容过滤器 |
| Bulk (packet) mode | ☐ | 开启批量模式 |