2017-07-27 26 views
0

获取所有的Python表元素我有一个网页看起来像这样:使用硒

<table class="data" width="100%" cellpadding="0" cellspacing="0"> 
     <tbody><tr> 
      <th>1</th> 
      <th>2</th> 
      <th>3 by</th> 
     </tr> 
         <tr>     <td width="10%"><a href="foo1">5120432</a></td> 
       <td width="70%">INTERESTED_SITE1/</td> 
       <td width="20%"><a href="foo2">foo2</a></td> 
      </tr> 
         <tr class="alt">     <td width="10%"><a href="foo1">5120431</a></td> 
       <td width="70%">INTERESTED_SITE2</td> 
       <td width="20%"><a href="foo2">foo2</a></td> 
      </tr> 

我希望把这些地方2个站点(interested_site1和interested_site2)。我试着做这样的事情:

chrome = webdriver.Chrome(chrome_path) 
chrome.get("fooSite") 
time.sleep(.5) 

alert = chrome.find_element_by_xpath("/div/table/tbody/tr[2]/td[2]").text 
print (alert) 

但我找不到第一个网站。如果我无法在for循环中执行此操作,我不介意单独获取每个链接。我怎样才能到达那个链接?

回答

1

这将是更容易使用的CSS查询

driver.find_element_by_css_selector("td:nth-child(2)") 
+0

谢谢你,它的工作! – csmn123

+0

一个谨慎的话!它会在你网页的所有表格中获得所有第二列(td)。如果您的网页只有一个表格,这将工作正常。 –

+0

最好使用类名称作为锚点,它会很好地工作。每个边缘案例都没有单独的子弹 –

1

您可以使用XPath来处理这个BYB遍历每一行。

xpath expression : html/body/table/tbody/tr[i]/td[2] 

获得由行的数量,

totals_rows =chrome.find_elements_by_xpath("html/body/table/tbody/tr") 
total_rows_length = len(totals_rows) 

for (row in totals_rows): 
    count = 1 
    site = "html/body/table/tbody/tr["+counter+]+"/td[2]" 
    print("site name is :"+ chrome.find_element_by_xpath(site).text) 
    site+=1 

基本上是通过每一行循环,并在第二列中获得的价值(TD [2])

+0

非常棒,非常感谢! – csmn123