1

如果我想第一次使用类,所以我不必猜测 find_elements_by_xpath(),我有什么选择?目标是编写更少的代码,确保我正在抓取的源代码的任何更改都可以轻松修复。有没有可能本质上

find_elements_by_css_selector('source[1]') 

这段代码不能按原样工作。

我在 Python 中使用 selenium,并且可能会使用 phantomJS 作为 webdriver(用于测试的 Firefox)。

4

1 回答 1

3

CSS Selectors中,方括号选择属性,因此您的示例代码试图选择具有名为 1 的属性的“源”类型元素,例如

<source 1="your_element" />

而我认为您正在尝试在列表中找到第一个,如下所示:

<source>Blah</source>
<source>Rah</source>

如果你只想要第一个匹配的元素,你可以使用单数形式:

element = find_element_by_css_selector("source")

您使用的表单返回一个列表,因此您还可以获取第 n-1 个元素以找到页面上的第 n 个实例(从 0 开始的列表索引):

element = find_elements_by_css_selector("source")[0]

最后,如果您希望您的 CSS 选择器完全明确地显示它们在哪个元素中查找,您可以使用nth-of-type选择器:

element = find_element_by_css_selector("source:nth-of-type(1)")

您可能会在Sauce Labs 的这篇博客文章中找到一些其他有用的信息,以帮助您编写灵活的选择器来替换您的 XPath。

于 2013-08-04T05:11:33.233 回答