Узел JS - форма осмоса - PullRequest
       64

Узел JS - форма осмоса

0 голосов
/ 23 октября 2018

В настоящее время я использую osmosis для очистки информации, которая находится внутри различных учетных записей.Для входа в эти учетные записи я пытаюсь использовать команду submit.Однако, похоже, ничего не делает.Я также попробовал .login, но, похоже, он вообще не распознает форму.

В документации, похоже, отсутствуют какие-либо примеры.Кто-нибудь сталкивался с .submit, используя osmosis?

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

1 Ответ

0 голосов
/ 09 ноября 2018

Это варьируется от сайта к сайту.Я предполагаю, что веб-сайт, на который вы пытаетесь зайти, использует какой-то ajax.Если .submit не сработало, вы можете попробовать сделать .post.Вот пример обходного пути.Попробуйте и посмотрите, работает ли он.

  1. Получить cookie через почтовый логин.первый экземпляр осмоса
  2. установить cookie в .config во втором экземпляре осмоса

код:

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 .

...