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

标签 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 倍多。但是,这不合适/可扩展,因为需要维护字典。

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

最佳答案

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

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

关于python - 如何在Python Selenium中选择与一个CSS选择器匹配的前N个网站元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48220599/

相关文章:

python - 为什么 App Engine 项目不调用 unittest.TestCase.tearDown()?

python - 通过列表迭代函数

javascript - 在页面中心放置ajax加载图像

python - 如何在函数中使用 LOCAL VARIABLE,就像其他函数的 GLOBAL VARIABLE 变量一样

python - 使用python获取二叉树中给定级别的所有节点

python - 扭曲或 celery ?哪个适合我的具有大量 SOAP 调用的应用程序?

javascript - 从 HTML 表单获取用户输入

javascript - 所有浏览器中渐变颜色的动态变化

Selenium 远程 Webdriver 无法与 AWS EC2 一起使用

java - Selenium SQL 数据库连接