javascript - 使用 CasperJS 和 PhantomJS 抓取 Google 关键字工具

标签 javascript screen-scraping web-scraping phantomjs

我目前正在尝试使用 CasperJS 抓取 Google 关键字工具和 PhantomJS(都是优秀的工具,感谢 n1k0 和 Ariya),但我无法让它工作。

这是我当前的流程:

  1. 使用我的 Google 帐户登录(以避免关键字工具中出现验证码)。
  2. 导航至“关键字工具”页面。
  3. 填写搜索表格并按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()之后查看该字段包含的内容。 As you can see ,它确认我位于正确的页面并且我已登录,但 <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 网站的人可能会对这个问题感兴趣。

最佳答案

document.querySelector('textarea.sP3.sBFB').value = 'MY SUPER KEYWORDS';

您不能在文本区域上使用elt.value。您尝试过 elt.textContent 吗?

关于javascript - 使用 CasperJS 和 PhantomJS 抓取 Google 关键字工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9391943/

相关文章:

javascript - 查找 DOM 中哪个元素被单击

Python Urllib UrlOpen 读取

node.js - 如何访问cheerio 中的表格元素?

javascript - 包装主干同步请求

Javascript:如何仅对可见元素执行计数?

python - 如何使用 lxml、XPath 和 Python 从网页中提取链接?

python - PyQuery:只获取元素的文本,而不是子元素的文本

selenium - chrome chrome 驱动程序是否支持 Selenium 的 PageLoadStrategy ='eager'?

python - Beautiful Soup 使用波斯字符串查找

javascript - 如何从匹配中仅获取完全匹配的字符串