2017-02-25 73 views
1

提取HTML標籤的所有孩子文字我有這樣的HTML如何通過硒的webdriver的Python

<tr height="22px"> 
 
    <td colspan="1" class="det" width="40%">Net Sales</td> 
 

 
    <td align="right" class="det">2,548.00</td> 
 
    <td align="right" class="det">1,946.36</td> 
 
    <td align="right" class="det">1,139.14</td> 
 
    <td align="right" class="det">2,345.60</td> 
 
    <td align="right" class="det">1,323.84</td> 
 
</tr>

我用找到的元素文本:

from selenium import webdriver 
driver = webdriver.Chrome() 
driver.get("url") 

quarterly_results_data = driver.find_element_by_xpath("//* [contains(text(),'Net Sales)]") 

print(quarterly_results_data.text) 

我得到:

Net Sales 

不過,我希望所有的父母<tr>之間的文本:

Net Sales 
2,548 
1,946 
... 

使用:

print(quarterly_results_data.parent.text) 

沒有給出任何結果。

我知道這可以通過beautifulsoup完成,但每次點擊新鏈接時我都必須使用html解析器。 請幫助正確的語法。

+0

請花一分鐘修復HTML中的縮進和間距,使其更易於閱讀。 – JeffC

回答

1

你應該得到如下的父元素的文本:

quarterly_results_data = driver.find_element_by_xpath("//*[contains(text(),'Net Sales')]/parent::*") 
print(quarterly_results_data.text) 

quarterly_results_data = driver.find_element_by_xpath("//tr[td[text()='Net Sales']]") 
print(quarterly_results_data.text) 

如果您需要單獨打印出每個td值:

for child in quarterly_results_data.find_elements_by_xpath('./td'): 
    print(child.text) 
+0

奇妙的工作!非常感謝! – Stelios