test
×
固定報酬制
|
〜 5,000円
|
---|---|
納品完了日
|
- |
掲載日
|
2019年05月06日 |
応募期限
|
2019年05月20日 |
必要なスキル
|
応募した人 | 3 人 |
---|---|
契約した人 | 1 人 |
募集人数 | 1 人 |
気になる!リスト | 6 人 |
centos7にヘッドレスChromeとpuppeteerとnodejsをインストールして、動的に更新されているサイトをスクレイピングしています。 一応、ログイン処理と実際に「情報を取得する」処理自体はできたのですが、以下の問題があります ・要素(クリックボタンなど)が見つからないエラーが出たり出なかったり ・動いたり動かなかったり ・取得した情報が空(ajaxで表示させているみたいなのですが、「取得」ボタンを押せるのですが取得した情報が空) という問題を抱えています。 理想としては 1 ログイン 2 指定ページへ移動 3 絞り込み検索 4 CSVダウンロード なのですが、2まではできています。 3の絞り込み検索なのですが、フォームに値を入れるところまで成功し await page.screenshot({ path: 'test.png', fullPage: true }) で実際にフォームに値が入っているのは見えています。(添付画像calendarOpen.png) ですがその状態で絞り込み検索をしても情報が取得できない、といったところです。 推測ですが、入力した条件を確定する「apply」ボタンが押せていないと思っています。 なので条件未指定のままCSVを出力しているのでだめなんだと思っています。 CSVがダウンロードできればいいのですが、どうしたらいいかお手上げです。 お手伝いいただける方を募集しています。 不明なところも多数あると思います。 お気軽にお問い合わせください。 よろしくお願いいたします。 以下、ソースです。 -------------------------------------- const fs = require('fs'); const assert = require('assert'); const puppeteer = require('puppeteer'); const loginID = 'お問い合わせいただければお伝えします。'; const loginPass = 'お問い合わせいただければお伝えします。'; const downloadPath = './download'; var loginURL = 'https://mypartners.xmtrading.com/#/login?lang=jp'; var traderlist = 'https://mypartners.xmtrading.com/#/reports/trader-list/real'; (async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox'] }); const page = await browser.newPage(); //ログインフォームを開く await page.goto(loginURL, { waitUntil: 'networkidle2' }); //ログインフォームが表示されたらログインする await page.waitFor('input[type="text"]'); await page.type('input[type="text"]', loginID); await page.type('input[type="password"]', loginPass); await page.click('#loginButton'); await page.waitForNavigation(); //ログインしたらtraderlistへ飛ぶ await page.goto(traderlist, { waitUntil: 'networkidle2'}); //カレンダーアイコンがあればクリックしてカレンダーを表示 await page.waitFor('.date-range-picker .au-target label'); await page.click('.date-range-picker .au-target label'); //始まりに過去の日付を入力する await page.$eval('input[name=daterangepicker_start]', (el) => { el.value = '' }); await page.$eval('input[name=daterangepicker_start]', (el) => { el.value = '01/05/2018' }); await page.select('.date-range-picker select', 'カスタム'); //Applyボタンを押したいが、有効にならない await page.waitFor('.daterangepicker'); await page.waitFor('.daterangepicker button.applyBtn'); await page.click('.daterangepicker button.applyBtn'); //ここの上2つでボタンがあるかをチェックしているはずなのに・・・ //動作確認用のキャプチャ、カレンダーは開いているのが分かる await page.screenshot({ path: 'calendarOpen.png', fullPage: true }) //右下の移転先ボタンをクリック await page.click('.run-report-element__button-box .dropdown button'); //その中にある.csvボタンをクリック await page.waitFor('.run-report-element__button-box .dropdown a'); //本当はここで、DLが始まるCSVを取得したい。場所はdownloadPathフォルダ //~~~~~~~~~~~~ // //動作確認用のキャプチャ,ボタンは押せているがデータが表示されない(CSVダウンロードでもテーブルは表示される) await page.screenshot({ path: 'table.png', fullPage: true }) browser.close(); })(); --------------------------------------------- |
クラウドワーカー | 応募日時 |
---|---|
HeppokoKyoro | 2019/05/06 20:35 |
Hajime Okada | 2019/05/06 15:11 |
やまけん2018 | 2019/05/06 14:32 |