現在,Node.jsとPuppeteerを組み合わせてPixivのスクレイピングを試みていますが,ログインする段階で詰んでいます。
下記のJavaScriptコードをNode.jsで実行しても,マイページのスクリーンショットが撮れません。代わりに,ユーザ名とパスワードが入力されたログイン画面が表示されます。
require('dotenv').config(); const puppeteer = require('puppeteer'); (async () => { //Puppeteerの起動 const browser = await puppeteer.launch(); const page = await browser.newPage(); //環境変数から読み込んだ情報でログイン await page.goto('https://accounts.pixiv.net/login?lang=ja&source=pc&view_type=page&ref=wwwtop_accounts_index'); await page.type('#LoginComponent input[autocomplete="username"]', process.env.PIXIV_ID); await page.type('#LoginComponent input[autocomplete="current-password"]', process.env.PIXIV_PASSWORD); await page.click('#LoginComponent button[type="submit"]'); await page.waitFor(5000); // スクリーンショットの取得 await page.screenshot({path: 'example.png'}); await browser.close(); })();
なお,ログインフォームのHTMLソースは以下のとおりです。
<div id="container-login"> <div id="LoginComponent"> <form> <div class="input-field-group"> <div class="input-field"> <input type="text" autocomplete="username" placeholder="メールアドレス / pixiv ID" autocapitalize="off" value=""> </div> <div class="input-field"> <input type="password" autocomplete="current-password" placeholder="パスワード" autocapitalize="off" value=""> </div> </div> <ul class="error-msg-list"> </ul> <button type="submit" class="signup-form__submit"> ログイン</button> <div class="signup-form-nav"> <div class="left"> </div> <div class="right"> <a href="https://www.pixiv.net/reminder.php" target="_blank" rel="noopener noreferrer"> わすれた</a> </div> </div> </form> </div> </div>
以上,よろしくお願いいたします。
あなたの回答
tips
プレビュー