Ang*_*hef 19 javascript screen-scraping web-scraping phantomjs
我目前正在尝试使用CasperJS和PhantomJS(这两个都是优秀的工具,感谢n1k0和Ariya)来抓取谷歌关键字工具,但我无法让它发挥作用.
这是我目前的流程:
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';
});
Run Code Online (Sandbox Code Playgroud)
什么都行不通.我正在做一个Casper#capture()正确的,看看该字段包含什么.正如您所看到的,它确认我在正确的页面上并且我已登录,但它<textarea>是空的.
奇怪的是,我可以访问DOM的其他部分:我可以改变一个链接,说的文本Advanced Options and Filters来___VINCE SAYS HELLO___(见截图),通过执行以下操作:
this.evaluate(function() {
document.querySelector('a.sLAB').textContent = '___VINCE SAYS HELLO___';
});
Run Code Online (Sandbox Code Playgroud)
PS.我知道抓取Google关键字工具是针对TOS的,但我认为这个问题可能会让任何试图抓住JavaScript/Ajax网站的人感兴趣.
我不确定这里到底发生了什么,但是您用于定位的类对我来说是不同的。OneBoxKeywordsInputPanel-input我假设您尝试定位的文本区域有第二个类 ,并且sPFB没有其他类。这些神秘的类可能在某种程度上是动态的。我建议使用更具描述性的类名称。以下对我来说效果很好:
document.querySelector('textarea.OneBoxKeywordsInputPanel-input')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3834 次 |
| 最近记录: |