이 코드는 매번 로컬에서 올바르게 실행됩니다. 그러나 서버에 배포 할 때 (크롬 브라우저를 사용하는 Raspberry Pi의 우분투) 가끔 3/10 시도 정도에 오류가 발생합니다. 이 코드는 가장 잘 작동합니다 ...
await page.goto('http://mywebsite.com')
const element = await page.$('div[class="user-tags"]')
const value = await page.evaluate(el => el.textContent, element)
그러나 때때로 반환됩니다 ... "경험 수준 오류 가져 오기 오류 : 평가 실패 : TypeError : null의 'textContent'속성을 읽을 수 없습니다."
그래서 나는 해결책을 찾고 이것을 시도했지만 매번 실패합니다 (두 코드 블록 모두 로컬에서 잘 실행됩니다) ...
await page.goto('http://mywebsite.com')
await page.waitForSelector('div[class="user-tags"]')
const element = await page.$('div[class="user-tags"]')
const value = await page.evaluate(el => el.textContent, element)
"경험 수준을 얻는 동안 오류 발생 오류 :"div [class = "user-tags"] "선택기 대기 중 실패 : 시간 초과 30000ms가 2020 년 9 월 10 일 @ 06:02:35를 초과했습니다."
제안 해 주셔서 감사합니다!
첫 번째와 두 번째 코드 스 니펫의 차이점
두 번째 코드 샘플에서는 puppeteer에게 div[class="user-tags"]
대상 페이지에 존재할 때까지 기다리도록 지시 합니다.
await page.waitForSelector('div[class="user-tags"]')
이것이 요소에서 데이터를 가져 오는 올바른 방법입니다. 먼저 사용할 수 있는지 확인한 다음 쿼리합니다.
시간 초과 오류는 주어진 요소가 30 초 이내에 발견되지 않기 때문에 발생합니다 (기본 시간 초과 임).
이 문제를 해결하는 방법
먼저 인형을 조종하는 사람이 요소를 찾지 못하는 이유를 파악해야합니다.
div.user-tags
모든 페이지에 있어야하는 것은 아닐까요?await page.goto(url, { waitUntil: 'networkidle0' })
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다