Python Selenium Webdriver - 定位表内的元素集

时间:2014-03-30 11:57:58

标签: python html selenium

我正在尝试使用python selenium在网页中提取链接列表。页面上的所有链接在源代码中都具有以下格式:

<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但不在父框架内?

由于

1 个答案:

答案 0 :(得分:0)

这应该让你想要你想要的东西:

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

table[name='table']位仅选择属性name设置为"table"的表格。然后选择器获取表的后代的所有a元素。因此,a元素是table元素的子元素还是它们出现在td元素元素中无关紧要。

请注意,如果您有多个name属性设置为值"table"的表格,那么您将获得的元素数量超出实际需要的数量。 (name属性不保证唯一性。)