From 1cf008d69b7a45208983f0dcef64730fa10d1167 Mon Sep 17 00:00:00 2001 From: angelystor Date: Thu, 2 Nov 2023 17:34:44 +0800 Subject: [PATCH 1/3] Fix for some LI profiles where there are only 2 elements --- linkedin_scraper/person.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/linkedin_scraper/person.py b/linkedin_scraper/person.py index 86d169e..2b4ca55 100644 --- a/linkedin_scraper/person.py +++ b/linkedin_scraper/person.py @@ -127,6 +127,7 @@ def get_experiences(self): position_summary_text = position_details_list[1] if len(position_details_list) > 1 else None outer_positions = position_summary_details.find_element(By.XPATH,"*").find_elements(By.XPATH,"*") + work_times = "" if len(outer_positions) == 4: position_title = outer_positions[0].find_element(By.TAG_NAME,"span").text company = outer_positions[1].find_element(By.TAG_NAME,"span").text @@ -143,6 +144,11 @@ def get_experiences(self): company = outer_positions[0].find_element(By.TAG_NAME,"span").text work_times = outer_positions[1].find_element(By.TAG_NAME,"span").text location = outer_positions[2].find_element(By.TAG_NAME,"span").text + elif len(outer_positions) == 2: + position_title = "" + company = outer_positions[0].find_element(By.TAG_NAME,"span").text + work_times = outer_positions[1].find_element(By.TAG_NAME,"span").text + location = "" times = work_times.split("·")[0].strip() if work_times else "" duration = work_times.split("·")[1].strip() if len(work_times.split("·")) > 1 else None From 73ec99d561a8aeaaddf39563b84841a0632459cb Mon Sep 17 00:00:00 2001 From: angelystor Date: Thu, 2 Nov 2023 17:39:17 +0800 Subject: [PATCH 2/3] Fix for individuals who have hidden their education --- linkedin_scraper/person.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/linkedin_scraper/person.py b/linkedin_scraper/person.py index 2b4ca55..a686f5e 100644 --- a/linkedin_scraper/person.py +++ b/linkedin_scraper/person.py @@ -206,7 +206,12 @@ def get_educations(self): main = self.wait_for_element_to_load(by=By.TAG_NAME, name="main") self.scroll_to_half() self.scroll_to_bottom() - main_list = self.wait_for_element_to_load(name="pvs-list", base=main) + try: + main_list = self.wait_for_element_to_load(name="pvs-list", base=main) + except: + # if education is hidden, this value will not be shown + return + for position in main_list.find_elements(By.CLASS_NAME,"pvs-entity"): institution_logo_elem, position_details = position.find_elements(By.XPATH,"*") From 8ff5eba11685f1e7b494957a78b20b0aea8f90fa Mon Sep 17 00:00:00 2001 From: angelystor Date: Thu, 2 Nov 2023 17:39:32 +0800 Subject: [PATCH 3/3] Add open to work with a default --- linkedin_scraper/person.py | 1 + 1 file changed, 1 insertion(+) diff --git a/linkedin_scraper/person.py b/linkedin_scraper/person.py index a686f5e..cd4e041 100644 --- a/linkedin_scraper/person.py +++ b/linkedin_scraper/person.py @@ -32,6 +32,7 @@ def __init__( close_on_complete=True, time_to_wait_after_login=0, ): + self.open_to_work = None self.linkedin_url = linkedin_url self.name = name self.about = about or []