使用 Selenium 抓取 LinkedIn 个人资料

时间:2021-01-28 16:48:48

标签: python selenium selenium-webdriver web-scraping

我正在尝试抓取linkedin 配置文件,但是当我获取配置文件 URL 时,它们会重复,因为一个 URL 可以位于多个类或标签中。您能否建议如何为每个配置文件仅找到一份 URL 副本。谢谢。

options = Options()
options.add_argument("--start-maximized")


url = "https://www.linkedin.com/login?fromSignIn=true&trk=guest_homepage-basic_nav-header-signin"
driver = webdriver.Chrome(r"path", options=options)

driver.get(url)
driver.find_element_by_id('username').send_keys('email')
driver.find_element_by_id('password').send_keys('pass', Keys.ENTER)
sleep(10)
driver.find_element_by_class_name('search-global-typeahead__input').send_keys('CEO', Keys.ENTER)
driver.implicitly_wait(10)
driver.find_element_by_xpath('//button[text()="Люди"]').click()

x = 0
linklist = []
driver.execute_script("window.scrollTo(0, 1300);")
driver.implicitly_wait(10)
links = driver.find_elements_by_xpath('//a[contains(@href, "/in/")]')

for i in links:
      sleep(2)
      link = i.get_attribute('href')
      linklist.append(link)
print(linklist)

1 个答案:

答案 0 :(得分:1)

如果您的 linklist 中有重复的值,您可以通过将它们转换为 set 来获取唯一值。

linklist=list(set(linklist))

编辑:

您收到重复的链接是因为您在 enite 网站上搜索链接,正如您所提到的,这些链接存在于不同的元素中。您可以通过先搜索每个成员的姓名标题来获得唯一链接。

options = Options()
options.add_argument("--start-maximized")


url = "https://www.linkedin.com/login?fromSignIn=true&trk=guest_homepage-basic_nav-header-signin"
driver = webdriver.Chrome(r"path", options=options)

driver.get(url)
driver.find_element_by_id('username').send_keys('email')
driver.find_element_by_id('password').send_keys('pass', Keys.ENTER)
sleep(10)
driver.find_element_by_class_name('search-global-typeahead__input').send_keys('CEO', Keys.ENTER)
driver.implicitly_wait(10)
driver.find_element_by_xpath('//button[text()="Люди"]').click()
sleep(5) #Wait for enitre page to load
linkedin_members = driver.find_elements_by_xpath('//span[@class="entity-result__title"]')

然后您可以遍历名称标题并选择元素中的 href(注意 . 中的 .//a[@class="app-aware-link]。您可以使用 try/except 语句来查找所有非隐藏的 href配置文件使用 .//a[contains(@href, "/in/")],但如果该元素不存在,则需要 selenium 一段时间才能弄清楚。选择所有 href 并在之后过滤隐藏的配置文件会更快。

linklist = [linkedin_member.find_element_by_xpath('.//a[@class="app-aware-link"]').get_attribute('href') for linkedin_member in linkedin_members if "/in/" in linkedin_member.find_element_by_xpath('.//a[@class="app-aware-link"]').get_attribute('href')]