如何select匹配一个CSS或pythonselenium中的前N个网站元素?
How to select the first N website elements matching one CSS selector in python selenium?
我在 python/selenium 设置中使用 phantomJS 进行屏幕抓取。
具体来说,我需要匹配一个 CSS selector.
的前 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 select 的解决方案是在一次调用中复制所有 html,将其转换为文本,然后获取 (text) 元素通过文本解析感兴趣,使用单词字典 keep/remove。这快了 4 倍多。但是,这不是 suitable/scalable,因为字典需要维护。
如何select匹配第一个CSSselect或pythonselenium中的第n个网站元素?
尝试以下解决方案以获得所需数量的匹配节点:
n_elements = WebDriverWait(driver, 1).until(lambda driver: driver.find_elements_by_css_selector('css_selector')[:N])
我在 python/selenium 设置中使用 phantomJS 进行屏幕抓取。 具体来说,我需要匹配一个 CSS selector.
的前 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 select 的解决方案是在一次调用中复制所有 html,将其转换为文本,然后获取 (text) 元素通过文本解析感兴趣,使用单词字典 keep/remove。这快了 4 倍多。但是,这不是 suitable/scalable,因为字典需要维护。
如何select匹配第一个CSSselect或pythonselenium中的第n个网站元素?
尝试以下解决方案以获得所需数量的匹配节点:
n_elements = WebDriverWait(driver, 1).until(lambda driver: driver.find_elements_by_css_selector('css_selector')[:N])