2015-12-21 56 views
1

我很新的硒,但我越來越好... :)VBA +硒元素找到替代CSS XPath的

我正在從一個網站提取數據,並在將其保存刮板excel表格。

該網站的結構是可怕的,沒有ID的所有,所有的類都是相同的命名,除了類有中很少使用的標籤和屬性。 該網站是充滿了表,我只需要從一個特定的 表的信息。很難找到它,因爲表格的順序每天都在變化。

該網站的結構是這樣的:

<div class="table"> 
    <table cellspacing="0" cellpadding="0" border="0"> 
     <thead> 
      <tr> 
       <th colspan="4"> 
        <strong>I NEED the bla bla from this table!</strong> 
     <tbody> 
      <tr class="even"> 
       <td>01</td> 
       <td>bla bla</td> 
       <td>bla bla</td> 
      <tr class="odd"> 
       <td>02</td> 
       <td>bla bla</td> 
       <td>bla bla</td> 

     </tbody> 

    </table> 
</div> 

<div class="table"> 
    <table cellspacing="0" cellpadding="0" border="0"> 
     <thead> 
      <tr> 
       <th colspan="4"> 
        <strong>I DON'T need this!</strong> 
     <tbody> 
      <tr class="even"> 
       <td>01</td> 
       <td>bla bla</td> 
       <td>bla bla</td> 
      <tr class="odd"> 
       <td>02</td> 
       <td>bla bla</td> 
       <td>bla bla</td> 

     </tbody> 

    </table> 
</div> 

當然也有從我不需要的數據很多其他表,但它們的結構長得一模一樣。

所以我只需要從一個表中的數據。我收集相關數據的方式是搜索我需要的字符串(「我需要這個」),然後退回幾個節點,然後再次進入tbody部分,最後我可以得到「bla bla」文本。 我在VBA和Selenium的XPath的幫助下完成此任務。 這裏是我的代碼:

Set my_Element = driver.FindElementsByXPath("(//th[strong='My text'])[1]/../../../tbody/tr[1]/td[2]") 

我有兩個問題:1 )有沒有什麼辦法讓與driver.FindElementByCss()命令相同的結果? 2)正如你可以在我的Xpath命令中看到的,我需要輸入確切的文本,有沒有什麼方法可以使用'contains'命令? (我不能使它工作:()

感謝您的幫助提前!

回答

0

此XPath查找表日與begining「我需要」和一日一

後得到的所有TD
//table[.//th/strong[starts-with(.,"I NEED")]]/tbody/tr/td[position()>1] 

結果

Element='<td>bla bla</td>' 
Element='<td>bla bla</td>' 
Element='<td>bla bla</td>' 
Element='<td>bla bla</td>' 
+0

親愛Spalsh58! 謝謝您的回覆!您的解決方案確實是比較實用的,然後我的代碼,但在後我問CSS選擇器替代(INS Xpath的tead)。 謝謝! – hunsnowboarder

+1

我回答poiтt2 :) – splash58

+0

:)是的,這是真的! :) 謝謝! – hunsnowboarder