相关疑难解决方法(0)

如何在不同的casperjs进程之间保留cookie

这是一个关于如何将cookie从一个casperjs页面持久存储到另一个页面的问题.

所以基本上我得到一个nodejs文件,它生成casperjs作为工作人员来完成某些任务..一个是登录,一旦登录我将cookie存储在一个文件中.

当我产生下一个casper worker时..我希望它使用cookie而不必再次登录..这两种方法都失败了:

第一:当我产生工人capserjs时,我添加了--cookies-file =./ cookiefilename ie var child = spawn('casperjs',['scrape.js','--cookies-file=./'+cookieFileName]);

第二:在casperjs工作文件中..我让它读取并从文件中设置cookie即

var casper = require('casper').create();
var cookieFileName = 'monsterCookie.txt';

// grab cookies from file 
var fs = require('fs');
var utils = require('utils');
var cookies = fs.read(cookieFileName);

casper.page.setCookies(cookies); 

casper.start('domain/page.html', function() {
    //FAIL! cookies aren't used here
    this.debugHTML();
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 有人提到早些时候start从页面删除cookies吗?如果是这样我该怎么做呢?
  2. 我知道会话持久同一phantomjs页面对象中(见这里https://gist.github.com/abbood/5347252)和相同casperjs页面对象中的同样的情况(见这里https://gist.github.com/ abbood/5347287)
  3. 请记住,我将cookie存储在文件中(即根本没有任何json/cookie解析)..所以我的cookie文件看起来就像这样

[一般]饼干="@变体(\ 0\0\0\0x7F部分\ 0\0\0\x16QList\0\0\0\0\X1\0\0\0 \n\0\0\0YCNTR = LB; expires = Tue,09-Apr-2013 17:12:05 GMT; domain = …

cookies session node.js phantomjs casperjs

28
推荐指数
2
解决办法
2万
查看次数

如何通过填写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)

javascript fill phantomjs casperjs

16
推荐指数
2
解决办法
3万
查看次数

使用phantomjs和Jquery登录网页

我是phantomjs,Java脚本和WebScraping的新手.我想要做的是基本的http身份验证,然后访问另一个URL以获取一些信息.这就是我现在所拥有的.请告诉我我做错了什么.

var page = require('webpage').create();
var system = require('system');

page.onConsoleMessage = function(msg) {
   console.log(msg);
};

page.onAlert = function(msg) {
   console.log('alert!!>' + msg);
};

page.settings.userName = "foo";
page.settings.password = "bar";

page.open("http://localhost/login", function(status) {
    console.log(status);
    var retval = page.evaluate(function() {
       return "test";
    });
    console.log(retval);

    page.open("http://localhost/ticket/" + system.args[1], function(status) {
        if ( status === "success" ) {
            page.injectJs("jquery.min.js");
            var k = page.evaluate(function () {
                var a = $("div.description > h3 + p");

                if (a.length == 2) {
                    console.log(a.slice(-1).text())
                } 
                else {
                    console.log(a.slice(-2).text())
                } …
Run Code Online (Sandbox Code Playgroud)

javascript jquery web-scraping phantomjs

5
推荐指数
1
解决办法
9054
查看次数