>웹 프론트엔드 >JS 튜토리얼 >`querySelectorAll`을 사용하여 Puppeteer의 `page.evaluate`에서 빈 개체 반환을 수정하는 방법은 무엇입니까?

`querySelectorAll`을 사용하여 Puppeteer의 `page.evaluate`에서 빈 개체 반환을 수정하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-18 09:31:02335검색

How to Fix Empty Object Returns in Puppeteer's `page.evaluate` with `querySelectorAll`?

Puppeteer에서 빈 개체 반환 해결 page.evaluate querySelectorAll

Puppeteer에서 평가 함수를 통해 querySelectorAll 메서드를 사용하여 문서 요소를 검색하려고 시도 종종 빈 객체의 배열로 이어집니다. 이는 Puppeteer로 작업하는 동안 흔히 발생하는 문제입니다.

이 문제를 해결하려면 평가 함수에서 반환된 값이 JSON 직렬화 가능해야 한다는 점에 유의하는 것이 중요합니다. 제공된 예에서 '제목' 요소와 같은 복잡한 요소를 평가할 때 결과 개체에는 함수와 같은 직렬화할 수 없는 값이 포함됩니다.

해결책은 JSON을 반환하기 전에 요소에서 원하는 정보를 추출하는 데 있습니다. 직렬화 가능한 값. 이 경우 전체 요소 개체 대신 요소에서 href 값을 추출하는 것이 목표입니다.

아래와 같이 평가 함수를 수정하면 href 값 목록을 성공적으로 검색할 수 있습니다.

await this.page.evaluate((sel) => {
  let elements = Array.from(document.querySelectorAll(sel));
  let links = elements.map(element => {
    return element.href
  })
  return links;
}, sel);

이렇게 하면 반환된 값이 JSON 직렬화 가능하고 결과 배열에서 빈 개체 문제가 해결됩니다.

위 내용은 `querySelectorAll`을 사용하여 Puppeteer의 `page.evaluate`에서 빈 개체 반환을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.