Tag: phantomjs

如何使用PhantomJS提交表单

我试图使用phantomJS(什么是一个很棒的工具btw!)来提交表单,我有login凭据的页面,然后输出目标页面的内容到标准输出。 我能够访问表单并使用幻影成功设置其值,但我不太确定正确的语法是提交表单并输出后续页面的内容。 我到目前为止是: var page = new WebPage(); var url = phantom.args[0]; page.open(url, function (status) { if (status !== 'success') { console.log('Unable to access network'); } else { console.log(page.evaluate(function () { var arr = document.getElementsByClassName("login-form"); var i; for (i=0; i < arr.length; i++) { if (arr[i].getAttribute('method') == "POST") { arr[i].elements["email"].value="mylogin@somedomain.com"; arr[i].elements["password"].value="mypassword"; // This part doesn't […]

有没有办法在Python中使用PhantomJS?

我想在Python中使用PhantomJS 。 我GOOGLE了这个问题,但找不到合适的解决scheme。 我发现os.popen()可能是一个不错的select。 但我不能通过一些论据。 使用subprocess.Popen()现在可能是一个合适的解决scheme。 我想知道是否有更好的解决scheme。 有没有办法在Python中使用PhantomJS?

无头浏览器和刮 – 解决scheme

我试图把浏览器自动testing套件和无头浏览器平台的可能的解决scheme清单能够刮。 浏览器testing/清理: Selenium – 浏览器自动化中的polyglot旗舰,为Python,Ruby,JavaScript,C#,Haskell等提供绑定,用于Firefox(作为扩展)的IDE,用于更快的testing部署。 可以作为一个服务器,并具有吨的function。 JAVASCRIPT PhantomJS – 使用屏幕截图和自动化的JavaScript无头testing,使用Webkit 。 从版本1.8开始,Selenium的WebDriver API被实现,所以你可以使用任何的WebDriver绑定和testing将与Selenium兼容 SlimerJS – 与PhantomJS类似,使用Gecko (Firefox)而不是WebKit CasperJS – 基于PhantomJS和SlimerJS构build的JavaScript ,具有额外的function Ghost驱动程序 – 用于PhantomJS的WebDriver Wire Protocol的 JavaScript实现。 新的 PhantomCSS – CSS回归testing。 一个CasperJS模块,用于使用PhantomJS和Resemble.js自动进行可视化回归testing。 新的 WebdriverCSS – Webdriver.io的插件,用于自动化视觉回归testing 新的 PhantomFlow – 通过testing描述和可视化用户stream程。 Web用户界面testing的一种实验方法。 新的 trifleJS – 移植 PhantomJS API来使用Internet Explorer引擎。 新的 CasperJS IDE (商业) Node.js的 节点 – […]

通过url来做同样的事情

我正在努力刮几个网站。 这是我的代码: for (var i = 0; i < urls.length; i++) { url = urls[i]; console.log("Start scraping: " + url); page.open(url, function () { waitFor(function() { return page.evaluate(function() { return document.getElementById("progressWrapper").childNodes.length == 1; }); }, function() { var price = page.evaluate(function() { // do something return price; }); console.log(price); result = url + " ; […]

CasperJS将数据传回给PHP

CasperJS被PHP用exec()命令调用。 在CasperJS完成其工作(如检索网页的某些部分)之后,如何将检索到的数据返回给PHP?

如何使一个SPAsearch引擎优化可抓取?

我一直在努力如何使谷歌根据谷歌的指示谷歌抓取。 尽pipe有很多一般性的解释,但是在实际的例子中,我找不到任何更深入的循序渐进的教程。 完成后,我想分享我的解决scheme,以便其他人也可以使用它,并可能进一步改善。 我正在使用Webapi控制器的MVC ,服务器端的Phantomjs ,以及客户端的Durandal启用了push-state ; 我也使用Breezejs进行客户端 – 服务器数据交互,所有这些我都强烈build议,但是我会尽量给出一个足够的解释,以帮助人们使用其他平台。

为什么this.evaluate不正确地返回DOM节点?

我试图通过evaluate()方法从网页中获取对象,所以我可以在evaluate范围之外使用它。 用名称symbolselect的元素是一个带有<options> (=下拉菜单)的<select>标签。 casper.then(function () { var elmnt = this.evaluate(function () { return document.getElementsByName("symbol")[0]; }); console.log(elmnt.options[14].index); }); //Returns TypeError: 'null' is not an object (evaluating 'elmnt.options[14].index') casper.then(function () { var elmnt = this.evaluate(function () { return document.getElementsByName("symbol")[0].options[14].index; }); console.log(elmnt); }); //Returns 14 所以它看起来像通过evaluate()方法返回一个对象返回它不完整,因为这工作正常: casper.then(function () { var elmnt = this.evaluate(function () { return document.getElementsByName("symbol")[0]; }); […]

在单个脚本中使用多个page.open

我的目标是通过使用以下命令来执行PhantomJS: // adding $op and $er for debugging purposes exec('phantomjs script.js', $op, $er); print_r($op); echo $er; 然后在script.js ,我打算使用多个page.open()捕获不同页面的屏幕截图,例如: var url = 'some dynamic url goes here'; page = require('webpage').create(); page.open(url, function (status) { console.log('opening page 1'); page.render('./slide1.png'); }); page = require('webpage').create(); page.open(url, function (status) { console.log('opening page 2'); page.render('./slide2.png'); }); page = require('webpage').create(); page.open(url, function […]

如何在python webdriver中为phantomjs / ghostdriver设置代理?

我想弄清楚如何通过HTTP代理路由我的请求。 我正在初始化webdriver像这样: user_agent = 'my user agent 1.0' DesiredCapabilities.PHANTOMJS['phantomjs.page.settings.userAgent'] = user_agent driver = webdriver.PhantomJS() 我已经通过文档和源代码,似乎无法find一种方法来使用代理服务器phantomjs通过webdriver。 有什么build议么?

如何使用Phantomjs向下滚动以加载dynamic内容

我试图从用户向下滚动到底部(无限滚动)时dynamic生成内容的页面刮取链接。 我试图用Phantomjs做不同的事情,但不能收集第一页以外的链接。 假设加载内容的底部的元素具有类.has-more-items 。 直到最终内容在滚动时才加载,然后在DOM中变为不可用(display:none)。 这是我尝试过的东西 – 在var page = require('webpage').create();后面设置viewportSize到一个很大的高度var page = require('webpage').create(); page.viewportSize = {width:1600,height:10000,}; 在page.open里面使用page.scrollPosition = { top: 10000, left: 0 } ,但是没有效果 – page.open('http://example.com/?q=houston', function(status) { if (status == "success") { page.scrollPosition = { top: 10000, left: 0 }; } }); 也试过把它放在page.evaluate函数里面,但是给出了 参考错误:无法findvariables页面 尝试在page.evaluate和page.open内使用jQuery和JS代码,但page.open $(“html,body”)。animate({scrollTop:$(document).height()},10,function(){//console.log('check for execution');}); 因为它也是在document.ready 。 类似的JS代码 – […]