div 클래스에 속하는 특정 텍스트를 얻는 방법

Jan 29 2021

<div class="col_5"> 
       <br>
            <i class="phone">
                  :: Before
                  </i>
                  0212 / 897645
            <br>
                  
                  <i class="print">
                  :: Before
                  </i>
                  0212 / 111111
            <br>
       <br>
</div>

먼저 웹 사이트에서 데이터를 가져와 팬더를 사용하여 이러한 데이터를 Excel에 적용합니다.

위에서 언급 한 html 코드가 있습니다. 뒤에 오는 전화 번호를 받고 다른 전화 번호를 <i class='phone'>전달하고 싶습니다 . 그러나 전화 번호는 I 클래스 <div class='col_5'>에 속하지 않으므로 'xpath'를 가져 와서 번호를 얻을 수 있지만 일부 'div'에는 전화 번호가없고 인쇄 번호 만 있기 때문에 이것은 나에게 안전하지 않습니다. 나를 위해 치명적입니다. 예를 들어 나는 <div class='col_5'>그와 같은 xpath를 찾으려고 노력 합니다.

num = browser.find_element_by_xpath('div[1]/div/div[103]/div[2]')
num.text.split('\n')

출력은

['02243 / 80343', '02243 / 83261']

<div class="col_5"> 
       <br>
            <i class="phone">
                  ::Before
                  </i>
                  
               <br>
                  <i class="print">
                  ::Before
                  </i> 
                  0201 / 623424
               <br>
        <br>
        <a href="mailto:[email protected]"> <i class="envelope"> </i> E-Mail</a>
 </div>

위에서 나는 전화 번호는 없지만 인쇄 번호 만있는 코드를 공유했다. <div class='col_5'>두 번째 코드에서 xpath를 얻을 때 인쇄 번호 만 얻고 이러한 경우 데이터 인쇄 번호를 전화 번호로 추가합니다. 그리고 이것은 잘못된 데이터를 유발합니다. 위에서 언급 한 것과 똑같은 작업을 수행하면 출력은 다음과 같습니다.

['0201 / 623424', '', 'E-Mail']

그래서 첫 번째 항목을 가져 오려고 할 때 인쇄 번호가 필요합니다. 전화 번호가 있으면 가져 가고 싶어요 그렇지 않으면 가져 가서 넘어가겠습니다. 이것이 가능한가?

답변

1 DebanjanB Jan 29 2021 at 04:42

텍스트를 인쇄하려면, 0212 / 897645당신은 유도해야 WebDriverWait을 을 위해 visibility_of_element_located()당신은 다음 중 하나를 사용할 수 있습니다 로케이터 전략 :

  • 사용 CSS_SELECTOR, childNodes에strip():

    print(driver.execute_script('return arguments[0].childNodes[5].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.col_5")))).strip())
    
  • XPATH, get_attribute()및 사용 splitlines():

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[1]/div/div[103]/div[2]"))).get_attribute("innerHTML").splitlines()[4])
    
  • 참고 : 다음 가져 오기를 추가해야합니다.

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

참고 문헌

다음에서 몇 가지 관련 세부 토론을 찾을 수 있습니다.

  • Selenium 및 Python을 사용하여 텍스트 노드에서 부분 텍스트를 검색하는 방법
  • Selenium과 Python을 사용하여 공백으로 구분 된 텍스트 노드에서 텍스트를 가져 오는 방법