首页 > 解决方案 > 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')

但是我在所有三个变量中都得到了一个空列表。请帮忙!

标签: seleniumselenium-webdriverweb-scrapingcss-selectors

解决方案


有几个原因。

  1. ID 是生成的,并且对于所有配置文件都不相同。
  2. 你不应该期望一个元素列表。个人资料页面上每种类型都有一个部分,因此将返回单个元素。
  3. 这些部分可能会异步加载,因此页面已加载但该部分尚未加载。这样定位器就会返回 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')))

推荐阅读