1

我目前正在osmosis用来抓取各种帐户中的信息。为了登录这些帐户,我正在尝试使用该submit命令。然而,它似乎没有做任何事情。我也尝试过.login,但这似乎根本无法识别表格。

该文档似乎缺少任何示例。有人.submit使用过osmosis吗?

osmosis
    .get(url)
    .submit("form", {'gebruikersnaam': username, 'wachtwoord': password})
    .log(console.log)
    .error(console.log)
    .debug(console.log);
4

1 回答 1

2

它因网站而异。我假设您尝试登录的网站正在使用某种 ajax。如果.submit没有成功,你可以尝试做.post。这是解决方法示例。试试看它是否有效。

  1. 通过登录后获取 cookie。第一个渗透实例
  2. .config在第二个渗透实例中设置 cookie

代码:

osmosis
.get(loginUrl)
.post(loginPosturlTarget, {'username': username, 'password': password})
.then((context)=>{
    // store cookies after post login.
    let cookies = cookie.parse(context.request.headers['cookie']);
    scrapeData(cookies);

})
.log(console.log)
.error(console.log)
.debug(console.log);

function scrapeData(cookies){
    // do the actual scraping here with the cookie here
    osmosis
    .config('cookies', cookies)
    .get(url) 
    // your follow/set/paginate/whatever chain here
    .data((data)=> {
        // do something with the data
    })
    .log(console.log)
    .error(console.log)
    .debug(console.log);
}

它不能保证在你的情况下工作,但我发现这在我工作过的大多数网站上都有效。如果仍然不起作用,也许可以尝试其他替代模块,例如nightmareJs

于 2018-11-09T09:49:56.393 回答