我目前正在尝试使用CasperJS和 PhantomJS(这两个出色的工具,感谢 n1k0 和 Ariya)来抓取 Google 关键字工具,但我无法让它工作。
这是我目前的流程:
- 使用我的 Google 帐户登录(以避免在关键字工具中出现验证码)。
- 导航到关键字工具页面。
- 填写搜索表格并按
Search
。
我被困在第 3 步:搜索表单不是常规的 HTML 表单,我不能使用Casper#fill()
,所以我直接访问这些字段。以下是我尝试更改Word or phrase
字段值的一些语法:
this.evaluate(function() {
// Trying to change the value...
document.querySelector('textarea.sP3.sBFB').value = 'MY SUPER KEYWORDS';
document.querySelector('textarea.sP3.sBFB').setAttribute('value', 'MY SUPER KEYWORDS');
document.querySelector('textarea').value = 'MY SUPER KEYWORDS'; // there's only one <textarea> on the page
// Trying to change other attributes...
document.querySelector('textarea.sP3.sBFB').textContent = 'MY SUPER KEYWORDS';
document.querySelector('textarea').style.backgroundColor = 'yellow';
});
没有任何效果。我正在Casper#capture()
查看该字段包含的内容。如您所见,它确认我在正确的页面上并且我已登录,但它<textarea>
是空的。
奇怪的是,我可以访问 DOM 的其他部分:我可以通过执行以下操作来更改链接的文本Advanced Options and Filters
(___VINCE SAYS HELLO___
请参阅捕获):
this.evaluate(function() {
document.querySelector('a.sLAB').textContent = '___VINCE SAYS HELLO___';
});
PS。我知道抓取 Google 关键字工具是违反 TOS 的,但我认为这个问题可能对任何试图抓取 JavaScript/Ajax-heavy 网站的人感兴趣。