我正在尝试使用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>
我需要link1
,link2
和link3
,但不是unwantedLink
。所需链接和不需要的链接都在同一帧中,因此切换帧不起作用。有没有办法在表中查找标记名a
但不在父框架内?
由于
答案 0 :(得分:0)
这应该让你想要你想要的东西:
driver.find_elements_by_css_selector("table[name='table'] a")
table[name='table']
位仅选择属性name
设置为"table"
的表格。然后选择器获取表的后代的所有a
元素。因此,a
元素是table
元素的子元素还是它们出现在td
元素元素中无关紧要。
请注意,如果您有多个name
属性设置为值"table"
的表格,那么您将获得的元素数量超出实际需要的数量。 (name
属性不保证唯一性。)