###Puppeteerでスクレイピングをしたいのですが下記のようなエラーが出ます。
###発生している問題・エラー
UnhandledPromiseRejectionWarning: Error: Error: failed to find element matching selector "body > div.ts-h-l-root > div.ts-h-l-body > div.ts-h-company-upperArea > div.ts-h-company-upperArea-companyNameArea.ts-s-cf > div.ts-h-company-upperArea-companyNameArea-dataArea > table > tbody > tr:nth-child(1) > td > div.ts-h-company-dataTable-main"
###ソースコード
const puppeteer = require('puppeteer'); const readline = require('readline'); const RIKUNAVI_TARGET_URL = 'https://job.rikunabi.com/2022/'; const RIKUNAVI_COMPANY_NAME_SELECTOR = '#mp_sp_input'; const RIKUNAVI_SEARCH_SELECTOR = '#mp_mv > div > div > div.mp_sp_01 > div > form > div.mp_clearfix.mp_mb13 > a'; function getFilename() { const offset = (new Date()).getTimezoneOffset() * 60000; const iso = (new Date(Date.now() - offset)).toISOString(); const m = iso.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})/); return `${m[1]}${m[2]}${m[3]}-${m[4]}${m[5]}${m[6]}.png`; } (async () => { const browser = await puppeteer.launch({ headless: false, }); const page = await browser.newPage(); await page.setViewport({ width: 1440, height: 900 }); await page.setExtraHTTPHeaders({ 'Accept-Language': 'ja' }); await page.goto(RIKUNAVI_TARGET_URL); const answer = await prompt('企業名検索'); await page.type(RIKUNAVI_COMPANY_NAME_SELECTOR, answer); await Promise.all([ page.waitForNavigation({ waitUntil: 'networkidle0' }), page.click(RIKUNAVI_SEARCH_SELECTOR), ]); let RIKUNAVI_COMPANY_LINK = '//*[@id="cassette-r742110032"]/div[1]/div/a'; await page.waitForXPath(RIKUNAVI_COMPANY_LINK); let elementHandleList = await page.$x(RIKUNAVI_COMPANY_LINK); await elementHandleList[0].click(); const COMPANY_NAME = await page.$eval('body > div.ts-h-l-root > div.ts-h-l-body > div.ts-h-company-upperArea > div.ts-h-company-upperArea-companyNameArea.ts-s-cf > div.ts-h-company-upperArea-companyNameArea-dataArea > table > tbody > tr:nth-child(1) > td > div.ts-h-company-dataTable-main', e => e.innerText); console.log(COMPANY_NAME); await browser.close(); })(); const prompt = async (msg) => { console.log(msg); const answer = await question('> '); return answer.trim(); }; const question = (question) => { const readlineInterface = readline.createInterface({ input: process.stdin, output: process.stdout }); return new Promise((resolve) => { readlineInterface.question(question, (answer) => { resolve(answer); readlineInterface.close(); }); }); };
###スクレイピングしたいサイト
https://job.rikunabi.com/2022/company/r742110032/
https://qiita.com/danodano/questions/9edbe870333cc86fd4c3
以下ご対応ください。
https://teratail.com/help#posted-otherservice
