2014-03-30 42 views
0

我想提取一個網頁中使用python硒的鏈接列表。所有網頁上的鏈接在源代碼的格式如下:Python的硒Webdriver - 定位表中的元素集

<a href = "link"></a> 

使用下面的行給了我所有的頁面上的標籤名a元素:

driver.find_elements_by_tag_name("a") 

的問題是,我只需要一組特定的鏈接,並且所有這些鏈接都在一張表內。上面的代碼爲我提供了頁面上的所有鏈接,甚至包括桌面外的所有鏈接。網頁源代碼的輪廓看起來是這樣的:

<html> 
    ... 
    ... 
    <frame name = "frame"> 
     <a href = "unwantedLink"> 
     <form name = "form"> 
      <table name = "table"> 
       <a href = "link1"> 
       <a href = "link2"> 
       <a href = "link3"> 
      </table> 
     </form> 
    </frame> 
    ... 
</html> 

我需要link1link2link3,但不unwantedLink。所需鏈接和不需要的鏈接都在同一個框架中,所以切換框架將不起作用。有沒有辦法在表格內尋找標籤名稱a,但不在父框架內?

感謝

回答

0

這應該給你想你想:

driver.find_elements_by_css_selector("table[name='table'] a") 

table[name='table']位與屬性name設置爲"table"只選擇表。然後選擇器獲得表格的後代的所有a元素。因此,a元素是table元素的子元素還是它們出現在td元素中並不重要。

請注意,如果您有多個表的name屬性設置爲值"table",則會獲得比您實際查找的元素更多的元素。 (對name屬性沒有唯一性保證。)