@@ -102,67 +102,66 @@ def _click_see_more_by_class_name(self, class_name):
102
102
103
103
def is_open_to_work (self ):
104
104
try :
105
- return "#OPEN_TO_WORK" in self .driver .find_element_by_class_name ( "pv-top-card-profile-picture" ).find_element_by_tag_name ( "img" ).get_attribute ("title" )
105
+ return "#OPEN_TO_WORK" in self .driver .find_element ( By . CLASS_NAME , "pv-top-card-profile-picture" ).find_element ( By . TAG_NAME , "img" ).get_attribute ("title" )
106
106
except :
107
107
return False
108
108
109
109
def get_experiences (self ):
110
110
url = os .path .join (self .linkedin_url , "details/experience" )
111
111
self .driver .get (url )
112
112
self .focus ()
113
- main = self .wait_for_element_to_load (by = By .ID , name = "main" )
113
+ main = self .wait_for_element_to_load (by = By .TAG_NAME , name = "main" )
114
114
self .scroll_to_half ()
115
115
self .scroll_to_bottom ()
116
116
main_list = self .wait_for_element_to_load (name = "pvs-list" , base = main )
117
- for position in main_list .find_elements_by_xpath ( "li" ):
118
- position = position .find_element_by_class_name ( "pvs-entity" )
119
- company_logo_elem , position_details = position .find_elements_by_xpath ( "*" )
117
+ for position in main_list .find_elements ( By . XPATH , "li" ):
118
+ position = position .find_element ( By . CLASS_NAME , "pvs-entity" )
119
+ company_logo_elem , position_details = position .find_elements ( By . XPATH , "*" )
120
120
121
121
# company elem
122
- company_linkedin_url = company_logo_elem .find_element_by_xpath ( "*" ).get_attribute ("href" )
122
+ company_linkedin_url = company_logo_elem .find_element ( By . XPATH , "*" ).get_attribute ("href" )
123
123
124
124
# position details
125
- position_details_list = position_details .find_elements_by_xpath ( "*" )
125
+ position_details_list = position_details .find_elements ( By . XPATH , "*" )
126
126
position_summary_details = position_details_list [0 ] if len (position_details_list ) > 0 else None
127
127
position_summary_text = position_details_list [1 ] if len (position_details_list ) > 1 else None
128
- outer_positions = position_summary_details .find_element_by_xpath ( "*" ).find_elements_by_xpath ( "*" )
128
+ outer_positions = position_summary_details .find_element ( By . XPATH , "*" ).find_elements ( By . XPATH , "*" )
129
129
130
130
if len (outer_positions ) == 4 :
131
- position_title = outer_positions [0 ].find_element_by_tag_name ( "span" ).find_element_by_tag_name ( "span" ).text
132
- company = outer_positions [1 ].find_element_by_tag_name ( "span" ).text
133
- work_times = outer_positions [2 ].find_element_by_tag_name ( "span" ).text
134
- location = outer_positions [3 ].find_element_by_tag_name ( "span" ).text
131
+ position_title = outer_positions [0 ].find_element ( By . TAG_NAME , "span" ).find_element ( By . TAG_NAME , "span" ).text
132
+ company = outer_positions [1 ].find_element ( By . TAG_NAME , "span" ).text
133
+ work_times = outer_positions [2 ].find_element ( By . TAG_NAME , "span" ).text
134
+ location = outer_positions [3 ].find_element ( By . TAG_NAME , "span" ).text
135
135
elif len (outer_positions ) == 3 :
136
136
if "·" in outer_positions [2 ].text :
137
- position_title = outer_positions [0 ].find_element_by_tag_name ( "span" ).find_element_by_tag_name ( "span" ).text
138
- company = outer_positions [1 ].find_element_by_tag_name ( "span" ).text
139
- work_times = outer_positions [2 ].find_element_by_tag_name ( "span" ).text
137
+ position_title = outer_positions [0 ].find_element ( By . TAG_NAME , "span" ).find_element ( By . TAG_NAME , "span" ).text
138
+ company = outer_positions [1 ].find_element ( By . TAG_NAME , "span" ).text
139
+ work_times = outer_positions [2 ].find_element ( By . TAG_NAME , "span" ).text
140
140
location = ""
141
141
else :
142
142
position_title = ""
143
- company = outer_positions [0 ].find_element_by_tag_name ( "span" ).find_element_by_tag_name ( "span" ).text
143
+ company = outer_positions [0 ].find_element ( By . TAG_NAME , "span" ).find_element ( By . TAG_NAME , "span" ).text
144
144
company = company [:company .find ("\n " )]
145
- work_times = outer_positions [1 ].find_element_by_tag_name ( "span" ).text
146
- location = outer_positions [2 ].find_element_by_tag_name ( "span" ).text
145
+ work_times = outer_positions [1 ].find_element ( By . TAG_NAME , "span" ).text
146
+ location = outer_positions [2 ].find_element ( By . TAG_NAME , "span" ).text
147
147
else :
148
148
# len(outer_positions) == 2
149
- company = outer_positions [0 ].find_element_by_tag_name ( "span" ).text
150
- work_times = outer_positions [1 ].find_element_by_tag_name ( "span" ).text
149
+ company = outer_positions [0 ].find_element ( By . TAG_NAME , "span" ).text
150
+ work_times = outer_positions [1 ].find_element ( By . TAG_NAME , "span" ).text
151
151
position_title = ""
152
152
location = ""
153
153
154
- if position_summary_text and len (
155
- position_summary_text .find_element_by_class_name ("pvs-list" ).find_element_by_class_name ("pvs-list" ).find_elements_by_xpath ("li" )) > 1 :
156
- descriptions = position_summary_text .find_element_by_class_name ("pvs-list" ).find_element_by_class_name ("pvs-list" ).find_elements_by_xpath ("li" )
154
+ if position_summary_text and len (position_summary_text .find_element (By .CLASS_NAME ,"pvs-list" ).find_element (By .CLASS_NAME ,"pvs-list" ).find_elements (By .XPATH ,"li" )) > 1 :
155
+ descriptions = position_summary_text .find_element (By .CLASS_NAME ,"pvs-list" ).find_element (By .CLASS_NAME ,"pvs-list" ).find_elements (By .XPATH ,"li" )
157
156
for description in descriptions :
158
- res = description .find_element_by_tag_name ( "a" ).find_elements_by_xpath ( "*" )
157
+ res = description .find_element ( By . TAG_NAME , "a" ).find_elements ( By . XPATH , "*" )
159
158
position_title_elem = res [0 ] if len (res ) > 0 else None
160
159
work_times_elem = res [1 ] if len (res ) > 1 else None
161
160
location_elem = res [2 ] if len (res ) > 2 else None
162
161
163
- location = location_elem .find_element_by_xpath ( "*" ).text if location_elem else None
164
- position_title = position_title_elem .find_element_by_xpath ( "*" ).find_element_by_tag_name ( "*" ).text if position_title_elem else ""
165
- work_times = work_times_elem .find_element_by_xpath ( "*" ).text if work_times_elem else ""
162
+ location = location_elem .find_element ( By . XPATH , "*" ).text if location_elem else None
163
+ position_title = position_title_elem .find_element ( By . XPATH , "*" ).find_element ( By . TAG_NAME , "*" ).text if position_title_elem else ""
164
+ work_times = work_times_elem .find_element ( By . XPATH , "*" ).text if work_times_elem else ""
166
165
times = work_times .split ("·" )[0 ].strip () if work_times else ""
167
166
duration = work_times .split ("·" )[1 ].strip () if len (work_times .split ("·" )) > 1 else None
168
167
from_date = " " .join (times .split (" " )[:2 ]) if times else ""
@@ -204,27 +203,27 @@ def get_educations(self):
204
203
url = os .path .join (self .linkedin_url , "details/education" )
205
204
self .driver .get (url )
206
205
self .focus ()
207
- main = self .wait_for_element_to_load (by = By .ID , name = "main" )
206
+ main = self .wait_for_element_to_load (by = By .TAG_NAME , name = "main" )
208
207
self .scroll_to_half ()
209
208
self .scroll_to_bottom ()
210
209
main_list = self .wait_for_element_to_load (name = "pvs-list" , base = main )
211
- for position in main_list .find_elements_by_class_name ( "pvs-entity" ):
212
- institution_logo_elem , position_details = position .find_elements_by_xpath ( "*" )
210
+ for position in main_list .find_elements ( By . CLASS_NAME , "pvs-entity" ):
211
+ institution_logo_elem , position_details = position .find_elements ( By . XPATH , "*" )
213
212
214
213
# company elem
215
- institution_linkedin_url = institution_logo_elem .find_element_by_xpath ( "*" ).get_attribute ("href" )
214
+ institution_linkedin_url = institution_logo_elem .find_element ( By . XPATH , "*" ).get_attribute ("href" )
216
215
217
216
# position details
218
- position_details_list = position_details .find_elements_by_xpath ( "*" )
217
+ position_details_list = position_details .find_elements ( By . XPATH , "*" )
219
218
position_summary_details = position_details_list [0 ] if len (position_details_list ) > 0 else None
220
219
position_summary_text = position_details_list [1 ] if len (position_details_list ) > 1 else None
221
- outer_positions = position_summary_details .find_element_by_xpath ( "*" ).find_elements_by_xpath ( "*" )
220
+ outer_positions = position_summary_details .find_element ( By . XPATH , "*" ).find_elements ( By . XPATH , "*" )
222
221
223
- institution_name = outer_positions [0 ].find_element_by_tag_name ( "span" ).find_element_by_tag_name ( "span" ).text
224
- degree = outer_positions [1 ].find_element_by_tag_name ( "span" ).text
222
+ institution_name = outer_positions [0 ].find_element ( By . TAG_NAME , "span" ).find_element ( By . TAG_NAME , "span" ).text
223
+ degree = outer_positions [1 ].find_element ( By . TAG_NAME , "span" ).text
225
224
226
225
if len (outer_positions ) > 2 :
227
- times = outer_positions [2 ].find_element_by_tag_name ( "span" ).text
226
+ times = outer_positions [2 ].find_element ( By . TAG_NAME , "span" ).text
228
227
229
228
from_date = " " .join (times .split (" " )[:2 ])
230
229
to_date = " " .join (times .split (" " )[3 :])
@@ -247,14 +246,14 @@ def get_educations(self):
247
246
self .add_education (education )
248
247
249
248
def get_name_and_location (self ):
250
- top_panels = self .driver .find_elements_by_class_name ( "pv-text-details__left-panel" )
251
- self .name = top_panels [0 ].find_elements_by_xpath ( "*" )[0 ].text
252
- self .location = top_panels [1 ].find_element_by_tag_name ( "span" ).text
249
+ top_panels = self .driver .find_elements ( By . CLASS_NAME , "pv-text-details__left-panel" )
250
+ self .name = top_panels [0 ].find_elements ( By . XPATH , "*" )[0 ].text
251
+ self .location = top_panels [1 ].find_element ( By . TAG_NAME , "span" ).text
253
252
254
253
255
254
def get_about (self ):
256
255
try :
257
- about = self .driver .find_element_by_id ( "about" ).find_element_by_xpath ( ".." ).find_element_by_class_name ( "display-flex" ).text
256
+ about = self .driver .find_element ( By . ID , "about" ).find_element ( By . XPATH , ".." ).find_element ( By . CLASS_NAME , "display-flex" ).text
258
257
except NoSuchElementException :
259
258
about = None
260
259
self .about = about
@@ -390,7 +389,7 @@ def job_title(self):
390
389
return None
391
390
392
391
def __repr__ (self ):
393
- return "{name}\n \n About\n {about}\n \n Experience\n {exp}\n \n Education\n {edu}\n \n Interest\n {int}\n \n Accomplishments\n {acc}\n \n Contacts\n {conn}" .format (
392
+ return "<Person {name}\n \n About\n {about}\n \n Experience\n {exp}\n \n Education\n {edu}\n \n Interest\n {int}\n \n Accomplishments\n {acc}\n \n Contacts\n {conn}> " .format (
394
393
name = self .name ,
395
394
about = self .about ,
396
395
exp = self .experiences ,
0 commit comments