【发布时间】:2014-04-05 07:48:20
【问题描述】:
我正在使用 Selenium 抓取/解析一个糟糕的网站(如果它不糟糕,我可能不会使用 Selenium,是的,尊重 robots.txt)。
我正在使用 find_element_by_id() 从一个大小未知的表中读取一组链接,这些链接具有顺序元素 ID。我正在赶上NoSuchElementException,告诉我我在桌子的最后,没有其他元素可以选择。
这会顺利遍历存在的元素,但是当我请求告诉我我在表格末尾的不存在元素时,大约需要 30 秒才能引发错误。
文件并不大 - 来自 DOM Inspector 的 html 转储文件提供了一个 81kb 的文件。表中的最后一个链接(Selenium 可以快速找到)是文件的 7/8 秒,因此(假设 Selenium 是按顺序解析)文件大小本身似乎无法解释这一点。
能否加快查找缺失元素的失败速度?或者有没有更优雅的方式来知道我在表格的最后一行有内容?
【问题讨论】:
-
例如我可以使用通配符一次获取所有匹配元素吗?它们看起来像 blah_blah_21_blah_blah,其中 21 是第 21 个元素。
-
你的代码中有
driver.implicitly_wait(30)这一行 -
是的,通配符匹配。按 css 选择器搜索。示例
find_elements_by_css_selector("[id^='blah_blah']") -
@Amey,是的,我知道 - 我想这意味着每次我请求不存在的元素时,它都在等待查看是否会加载更多页面?
标签: python-2.7 selenium