首页 > 解决方案 > 如何使用 Selenium 从 LinkedIn 公司页面中抓取员工人数?

问题描述

我正在尝试构建一个搜索行业名称的程序,然后单击 LinkedIn 上结果列表中的第一个个人资料并抓取确切的员工人数。我为它编写了代码,我认为它会起作用,但我似乎无法理解为什么代码没有返回确切的员工人数。xpath 似乎是正确的 - 任何帮助都会非常受欢迎!

import time
import re
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup

driver = webdriver.Chrome()
driver.get('https://www.linkedin.com/login')

nameidElem = driver.find_element_by_id('username')
nameidElem.send_keys('username_here')

pwdidElem = driver.find_element_by_id('password')
pwdidElem.send_keys('password_here')

continueElem = driver.find_element_by_class_name("btn__primary--large")
result = continueElem.submit()
time.sleep(10)

industry = "books"
link = "https://www.linkedin.com/search/results/companies/?keywords=" + 
industry + "&origin=GLOBAL_SEARCH_HEADER"
driver.get(link)

firstcompany = driver.find_element_by_class_name("search-result__title")
firstcompany.click()

employees = driver.find_elements_by_xpath('//*[@id="ember1274"]')
number = re.findall(r'\d', employees.text)
print(number)

标签: pythonseleniumselenium-chromedriver

解决方案


使用以下 xpath 获取员工人数。

//*[.='Company size']/following-sibling::*[contains(.,'employees')]

截屏:

在此处输入图像描述

确保在单击 firstCompany 链接后等待元素呈现。

编辑1:

使用下面的 xpath 来“查看 LinkedIn 上的所有XX员工”

//a[@data-control-name='topcard_see_all_employees']/span

CSS:

a[data-control-name='topcard_see_all_employees'] span

截屏: 在此处输入图像描述


推荐阅读