selenium - Selenium 中的 CSS 选择器 - 网页抓取
问题描述
作为我大学项目的一部分,我正在做 Linkedin 网络抓取。这是定位技能和认可、建议和成就部分的代码:
skills = driver.find_elements_by_css_selector('#ember661')
recom = driver.find_elements_by_css_selector('#ember679')
acc = driver.find_elements_by_css_selector('#ember695')
但是我在所有三个变量中都得到了一个空列表。请帮忙!
解决方案
有几个原因。
- ID 是生成的,并且对于所有配置文件都不相同。
- 你不应该期望一个元素列表。个人资料页面上每种类型都有一个部分,因此将返回单个元素。
- 这些部分可能会异步加载,因此页面已加载但该部分尚未加载。这样定位器就会返回 false。在这种情况下,您需要使用显式等待。喜欢:
waiter = WebDriverWait(driver, 10)
skills = waiter.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.pv-skill-categories-section')))
recom = waiter.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.pv-recommendations-section')))
acc = waiter.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.pv-accomplishments-section')))
推荐阅读
- javascript - jquery中的tic tac toe我可以缩短这段代码吗
- electron - Cypress:Electron 不支持 .finally()?
- java - 无论如何从 AsyncResttemplate 获取 http.client.requests 指标?
- java - 如何将方法参数设置为可选?
- java - 将整个数组列表存储为单个字符串,并在需要时从字符串中检索数组列表
- ios - Swift 闪烁 UIButtons(不点击)
- sql - SSIS:使用 OUTPUT 语句执行 SQL 任务
- reactjs - 使用 react-select 时,在 React 中遇到“此条件将始终返回 'true',因为类型 'boolean' 和 'string' 没有重叠”
- java - 使用 Visual Studio Code 和 Tomcat for Java 扩展部署 Java Web 应用程序时出错
- python - 如何在 Python3.7/3.8 中使用泛型命名元组?