2012-07-18 43 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