Puppeteer 브라우저에서 쿠키 허용 버튼을 클릭한 후 예기치 않은 종료 동작이 발생합니다.
P粉883278265
2023-08-16 21:40:51
<p>실시간 축구 정보를 위한 웹사이트를 크롤링하기 위해 node.js와 puppeteer를 사용하려고 하는데 console.log("trying to select team element") 후에 브라우저가 즉시 닫힙니다. </p>
<pre class="brush:php;toolbar:false;">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()를 기다립니다.
})();</pre>
<p>이러한 이유에 대한 아이디어와 내 코드에 대한 추가 비판을 환영합니다! </p>
으아악await page.waitForSelector(".Ip")
只返回一个元素,而不是一个数组,所以无法循环遍历。应该有一个清晰的错误消息来解释这个问题。相反,可以使用page.$$eval
(또는 최신 Locator API을 사용하려는 경우) 데이터를 추출하세요.참고:
waitForSelector
반환 값을 확인할 필요가 없습니다. 요소임이 보장됩니다. 그렇지 않으면 지정된 시간 내에 발견되지 않으면 예외가 발생합니다.await elements[i].$(".Ip")
不会帮助你访问任何内容,因为在你已经持有的.Ip
元素内部没有.Ip
.