2012-07-18 41 views
2

以下是表格的HTML源代碼,它似乎是非常複雜的硒閱讀其內容..有人可以幫助我,閱讀此數據到Python使用硒?如何使用硒python讀表數據?

<div class="general_table"> 
    <div class="general_s"> 
     <div class="general_text1">Name</div> 
     <div class="general_text2">Abhishek</div> 
    </div> 
    <div class="general_m"> 
     <div class="general_text1">Last Name</div> 
     <div class="general_text2">Kulkarni</div> 
    </div> 
    <div class="general_s"> 
     <div class="general_text1">Phone</div> 
     <div class="general_text2"> 13613123</div> 
    </div> 
    <div class="general_m"> 
     <div class="general_text1">Cell Phone</div> 
     <div class="general_text2">82928091</div> 
    </div>   
    <div class="general_s"> 
     <div class="general_text1">City</div> 
     <div class="general_text2"></div> 
    </div> 
    <div class="general_m"> 
     <div class="general_text1">Model</div> 
     <div class="general_text2"> DELL PERC H700</div> 
    </div> 
</div> 

回答

2

要使用硒的webdriver閱讀此表,XPath的似乎是最簡單的方式 -

我不知道正確的python這樣的代碼可能是錯的但這個想法似乎是正確的 -

要找出general_table中div標記的數量,我們使用xpath -

driver.find_elements_by_xpath(("//*[@class='general_table']/div")這將返回一個列表與大小 - 6

然後你可以通過每個使用循環元素循環 -

for(int i=1;i<=list.length;i++){ 
    String text1 = driver.find_element_by_xpath("//*[@class='general_table']/div["+i+"]/div[1]").text; 
    String text2 = driver.find_element_by_xpath("//*[@class='general_table']/div["+i+"]/div[2]").text; 
} 

您可以通過這種方式讀取表中的所有標籤。

+0

Hari,感謝您的回答 – 2012-07-19 12:35:04

+0

您能否通過滴答作出正確的答覆我的答案如果這個解決方案爲你工作。 – 2012-07-19 15:19:42

1

使用硒搶頁面的源代碼(所以你畢竟JS/AJAX的東西,真正的內容)和類似BeautifulSoup解析它。

from bs4 import BeautifulSoup 

soup = BeautifulSoup("""<div class="general_table"> 
    <div class="general_s"> 
     <div class="general_text1">Name</div> 
     <div class="general_text2">Abhishek</div> 
    </div> 
    <div class="general_m"> 
     <div class="general_text1">Last Name</div> 
     <div class="general_text2">Kulkarni</div> 
    </div> 
    <div class="general_s"> 
     <div class="general_text1">Phone</div> 
     <div class="general_text2"> 13613123</div> 
    </div> 
    <div class="general_m"> 
     <div class="general_text1">Cell Phone</div> 
     <div class="general_text2">82928091</div> 
    </div>   
    <div class="general_s"> 
     <div class="general_text1">City</div> 
     <div class="general_text2"></div> 
    </div> 
    <div class="general_m"> 
     <div class="general_text1">Model</div> 
     <div class="general_text2"> DELL PERC H700</div> 
    </div> 
</div>""") 

def tags(iterable): 
    return filter(lambda x: not isinstance(x, basestring), iterable) 

for table in soup.find_all('div', {'class': 'general_table'}): 
    for line in tags(table.contents): 
     for i, column in enumerate(tags(line.contents)): 
      if column.string: 
       print column.string.strip(), 
      if i: 
       print ',', 
      else: 
       print ':', 
     print ''  

結果:

Name : Abhishek , 
Last Name : Kulkarni , 
Phone : 13613123 , 
Cell Phone : 82928091 , 
City : 
Model : DELL PERC H700 , 
+0

感謝Paulo,這個解決方案也適用於我,儘管使用硒獲取源代碼並不是一個好主意..因此我會去Hari的解決方案.. – 2012-07-19 12:36:51