我想在服务器端执行以下操作:
1)刮取网页
2)模拟该页面上的点击,然后导航到新页面.
3)刮掉新页面
4)模拟新页面上的一些按钮点击
5)通过json或其他东西将数据发送回客户端
我正在考虑将它与Node.js一起使用.
但我很困惑我应该使用哪个模块
a)Zombie
b)Node.io
c)Phantomjs
d)JSDOM
e)其他
我已经安装了node,io但是无法通过命令提示符运行它.
PS:我在Windows 2008服务器上工作
我在用waitFor().代码如下:
casper.waitFor(function check() {
return this.evaluate(function() {
return this.evaluate(someFunction, 'variable 1','variable 2','variable 3') === 'yes';
});
}, function then() {
console.log('Done');
});
Run Code Online (Sandbox Code Playgroud)
我把它作为控制台输出
Wait timeout of 5000ms expired, exiting.
Run Code Online (Sandbox Code Playgroud)
如何增加超时?
编辑:我已将代码更改为
casper.waitFor(function check() {
return this.evaluate(function() {
return this.evaluate(someFunction, 'variable 1','variable 2','variable 3') === 'yes';
});
}, function then() {
console.log('Done');
},10000);
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:
CasperError: Invalid timeout function, exiting.
C:/filename:1720 in _check
Run Code Online (Sandbox Code Playgroud) 我在手机上安装了一个Android应用程序,我在java上创建了自己的应用程序.该应用程序已成功安装在设备上,但我无法找到已安装的软件包.
如何找到已安装应用程序的路径?
我有输入元素如图所示:
<input type="text" class="bg-white" id="couponCode" value="">
如何使用casperJs设置/填充其值
以下是我拥有的登录表单的hlml
<div class="login_area_user">
<form method="post" action="https://www.tradus.com/login?dest_url=https://www.tradus.com/cart/select-address" id="user-login">
<input type="hidden" value="1" name="form_submit">
<h3 style="display:inline-block;">Already a Member</h3>
<p id="login-main-center-right-descp">You can use tradus login id and password</p>
<div class="login-row">
<label class="colorBlack">Email / Login*</label>
<input class="login-field" type="text" name="name" id="edit-namepopup">
</div> <!-- [/login-row] -->
<div class="login-row">
<label>Password</label>
<input class="login-field" type="password" id="edit-passpopup" name="pass">
</div> <!-- [/login-row] -->
<div class="login-row">
<a class="forgotPassword" href="/forgot_password">Forgot your password?</a>
<!--input type="checkbox" name="remember" /><span>Remember me</span-->
</div>
<div class="login-row">
<input class="login-button" value="Login" type="submit">
</div>
<input type="hidden" name="op" value="Log in">
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
我使用以下代码登录:
this.fill('form#user-login', …Run Code Online (Sandbox Code Playgroud) 我有一个非常具体的问题.
首先让我解释一下我想要做什么,然后解决问题.
基本上我要做的是将现有的.db数据库文件存储在assets文件夹中,然后在安装后我想将.db文件从资产复制到Android中的默认数据库位置.与此页面类似的答案[link] 如何在Android应用程序中使用现有数据库.
问题对于无根设备我无法访问/data/data/<<package name folder>>.在这种情况下,数据库文件存储在何处.在其他方面,我想将资产从资产复制到数据库的应用程序默认位置DB_PATH = "/data/data/" + context.getPackageName() + "/databases/",如果是root用户设备.对于无根设备是否相同?
我在我们的网站上实现了ZeroClipboard功能 - http://couponvoodoo.com/rcp/Jabong.com/coupons-offers?field_offer_type_tid= 我使用的是Drupal-7
它在桌面版上运行良好,但不适用于该站点的移动版本.我在页脚中添加了以下代码:
<script type="text/javascript">
copy_coupon_footer();
function copy_coupon_footer(){
var divArray = document.getElementsByClassName("unlock_best_coupon");
for (var i = 0, len = divArray.length; i < len; ++i) {
var offer_type = divArray[i].getAttribute('data-clipboard-text');
// alert('offer_type '+offer_type );
try{
var id = divArray[i].getAttribute( 'id' );
var client = new ZeroClipboard( document.getElementById(id), {moviePath:'/moviePath' } );
client.on( 'load', function(client) {
client.on( 'complete', function(client, args) {try{
var url = this.getAttribute("href");
var coupon_code = url.split('&c=')[1].split('&')[0];
this.innerHTML = coupon_code;
var classname = this.className+' copied_coupon';
this.setAttribute("class",classname);
// window.open(url,'_blank');
window.location.href …Run Code Online (Sandbox Code Playgroud) 我在python中使用scrapy编写了一个刮刀.它包含100个start_urls.
我想在条件满足后终止刮擦过程.即找到终止特定div的刮擦.终止我的意思是它应该停止刮掉所有网址.
可能吗
我有以下JSON:
$p={
"main1" : [
{
"child1" : valueA,
"child2" : valueB,
"child3" : valueC,
},
{
"child1" : value1,
"child3" : value3,
},
],
"main2" : "valueMain2"
}
Run Code Online (Sandbox Code Playgroud)
child2必须检查该元素是否存在,然后获取该值.我正在使用json_decode:
$response = json_decode($p,true);
Run Code Online (Sandbox Code Playgroud)
如何检查PHP中是否存在元素?我是否必须制作单独的功能或是否有内置功能?
我正在使用scrapy来抓一个网站.我想选择id为"result_%s"形式的所有元素,其中%s是任何整数.
sites.select('//*[@id="result_1"]')
Run Code Online (Sandbox Code Playgroud)
如何实现
我有如下链接:
<a href="www.google.com" onClick="someFunction()">Click me</a>
Run Code Online (Sandbox Code Playgroud)
点击链接后,它正在执行JavaScript函数,但没有将我带到href链接.
任何想法如何实现相同?
如何evaluate在CasperJS中调试javascript函数(使用)?
这里有什么类似的东西alert()可以在需要时在命令行上打印值吗?