如何在python selenium中选择匹配一个CSS选择器的前N个网站元素?

时间:2018-01-12 06:16:43

标签: python css selenium screen-scraping

我在python / selenium设置中使用phantomJS进行屏幕抓取。 具体来说,我需要与一个CSS选择器匹配的前N个元素。

挑战在于网站中存在的匹配元素数量增加了一倍以上,因此下面的调用时间过长(速度是我的主要要求):

targets =  WebDriverWait(driver, 1).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, css_selector)))

有没有办法为找到的元素定义截止值,例如:

EC.presence_of_all_elements_located((By.CSS_SELECTOR, css_selector[0:N])))

我之前没有CSS选择器的解决方案是在一次调用中复制所有html,将其转换为文本,然后通过文本解析获得感兴趣的(文本)元素,使用单词词汇来保留/删除。这速度提高了4倍多。但是,这不适合/可扩展,因为需要维护dict。

如何选择与python selenium中的一个CSS选择器匹配的前n个网站元素?

1 个答案:

答案 0 :(得分:2)

尝试以下解决方案以获得所需数量的匹配节点:

n_elements = WebDriverWait(driver, 1).until(lambda driver: driver.find_elements_by_css_selector('css_selector')[:N])