Puppeteer 브라우저에서 쿠키 허용 버튼을 클릭한 후 예기치 않은 종료 동작이 발생합니다.
P粉883278265
P粉883278265 2023-08-16 21:40:51
0
1
362

실시간 축구 정보를 위한 웹사이트를 크롤링하기 위해 node.js와 puppeteer를 사용하려고 하는데 console.log("trying to select team element") 후에 브라우저가 즉시 닫힙니다.

const puppeteer = require("puppeteer"); 비동기 함수 openPage() { const browser = wait puppeteer.launch( {headless: true} ); const 페이지 = browser.newPage()를 기다립니다; wait page.setViewport({ 너비: 1000, 높이: 926 }); page.goto("https://www.livescore.com/en/")를 기다립니다. //쿠키 허용 const 버튼 = 대기 page.waitForSelector('#onetrust-accept-btn-handler'); if (버튼) { 버튼을 기다립니다.click(); console.log("쿠키 버튼을 클릭했습니다."); }; 페이지 복귀; } 비동기 함수 scrapeData(페이지) { 내용 = []; // 경쟁 요소를 가져옵니다. 요소 = 대기 page.waitForSelector(".Ip") console.log("팀 요소를 선택하려고 합니다.") for (let i=0; i < elements.length; i++) { let homeTeamElement = 요소[i].$(".Ip")를 기다립니다. if (homeTeamElement) { const homeTeamText = homeTeamElement.evaluate(node => node.textContent)를 기다립니다. content.push(homeTeamText); } }; 콘텐츠 반환; }; (비동기 () => { const 페이지 = openPage()를 기다립니다; const dataScraped = scrapeData(페이지)를 기다립니다. console.log(데이터 스크랩) page.browser().close()를 기다립니다. })();

이러한 이유에 대한 아이디어와 내 코드에 대한 추가 비판을 환영합니다!

P粉883278265
P粉883278265

모든 응답 (1)
P粉798010441

await page.waitForSelector(".Ip")只返回一个元素,而不是一个数组,所以无法循环遍历。应该有一个清晰的错误消息来解释这个问题。相反,可以使用page.$$eval(또는 최신Locator API을 사용하려는 경우) 데이터를 추출하세요.

으아악

참고:

  • 크롤링 시 쿠키 배너를 끌 필요는 없지만, 사용하시면waitForSelector반환 값을 확인할 필요가 없습니다. 요소임이 보장됩니다. 그렇지 않으면 지정된 시간 내에 발견되지 않으면 예외가 발생합니다.
  • await elements[i].$(".Ip")不会帮助你访问任何内容,因为在你已经持有的.Ip元素内部没有.Ip.
  • ElementHandles를 사용하지 마세요. 느리고 신뢰할 수 없으며 장황합니다.
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!