如何获取属于 div class 的特定文本

How to get specific text that belongs to div class

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

首先,我从网站获取数据并使用 pandas 将这些数据应用到 excel。

我有一个如上所述的 html 代码。我想取 <i class='phone'> 之后的 phone 号码并传递另一个号码。然而 phone 号码不属于我 class 所以我只能通过获取 <div class='col_5'> 的 'xpath' 来获得号码但这对我来说不安全因为一些 'divs' 没有 phone 号码,只有打印号码,这对我来说可能是致命的。例如,我尝试像那样找到 <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:info@someone.com"> <i class="envelope"> </i> E-Mail</a>
 </div>

以上 我分享了没有 phone 号码但只有打印号码的代码。当我在第二个代码中得到 <div class='col_5'> 的 xpath 时,我只得到打印编号,当这些发生时,我将我的数据打印编号添加为 phone 编号。这会导致不正确的数据。当我执行与上述完全相同的操作时,输出为

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

所以当我尝试取第一项时,它取了打印编号。如果有phone号,我只想拿走,如果没有,拿走继续。这可能吗?

要打印文本 0212 / 897645 你必须引入 for the visibility_of_element_located() and you can use either of the following :

  • 使用 CSS_SELECTORchildNodesstrip():

    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())
    
  • 使用 XPATHget_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
    

参考资料

您可以在以下位置找到一些相关的详细讨论: