Selenium으로 페이지를 가져 오지만 알 수없는 요소 값이 비어 있지 않을 때까지 기다립니다.

Nov 23 2020

문맥

이것은 Selenium으로 페이지 가져 오기의 재 게시 이지만 요소 값이 비어 있지 않을 때까지 기다립니다 . 이는 내가 말할 수있는 한 유효성없이 닫혔습니다.

클로저 추론에서 연결된 답변은 예상되는 텍스트 값이 무엇인지 아는 것에 의존합니다. 각 답변에서 WebDriverWait호출에 하드 코딩 된 예상 텍스트를 명시 적으로 표시합니다 . 또한 연결된 답변 중 어느 것도 내 질문의 마지막 부분을 원격으로 만지지 않습니다.

[예상 조건 여부] 페이지의 앞뒤로 가져 오기

"중복"질문

  • 다음 HTML에서 데이터를 추출하는 방법은 무엇입니까?
  • 요소 내의 텍스트에 특정 부분 텍스트가 포함되어 있는지 확인

원래 질문

Selenium을 사용하여 웹 페이지를 가져오고 있지만 특정 값이로드 될 때까지 기다려야합니다. 나는 그 가치가 무엇인지 모르고 그것이 어떤 요소에 존재할 것인지 만 모른다.

예상 된 조건을 사용 text_to_be_present_in_element_value하거나 text_to_be_present_in_element앞으로 나아갈 가능성이 가장 높은 것으로 보이지만 사용 방법에 대한 실제 문서를 찾는 데 어려움이 있으며 페이지 가져 오기 전후에 오는지 모르겠습니다.

webdriver.get(url)

바꿔 말하다

Selenium을 사용하여 페이지를 가져 오지만 계속하기 전에 알 수없는 텍스트 값이 요소의 텍스트 또는 값을 채울 때까지 기다리려면 어떻게합니까?

답변

BBorisov95 Nov 23 2020 at 21:16

내 대답이 최선이 아니라고 확신하지만 여기 내 코드의 일부가 귀하의 질문과 비슷한 도움이되었습니다.

제 경우에는 DOM 로딩 시간에 문제가있었습니다. 때로는 5 초, 때로는 1 초가 걸렸습니다.

url = 'www.somesite.com'
browser.get(url)

제 경우 browser.implicitly_wait(7)에는 충분하지 않았기 때문입니다. for loop 콘텐츠가로드되었는지 간단 하게 확인했습니다.

some code...

 for try_html in range(7):
        """ Make 7 tries to check if the element is loaded """
        browser.implicitly_wait(7)
        html = browser.page_source
        soup = BeautifulSoup(html, 'lxml')
        raw_data = soup.find_all('script', type='application/ld+json')
        

       """if SKU in not found in the html page we skip 
         for another loop, else we break the 
          tryes and scrape the page"""

        if 'sku' not in html:
            continue
        else:
            scrape(raw_data)
            break

완벽하지는 않지만 시도해 볼 수 있습니다.