Skip to content

Instantly share code, notes, and snippets.

@juanifioren
Created November 8, 2022 16:21
Show Gist options
  • Save juanifioren/d5d8cc4784165320555a43338b17b0a2 to your computer and use it in GitHub Desktop.
Save juanifioren/d5d8cc4784165320555a43338b17b0a2 to your computer and use it in GitHub Desktop.
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# Primero loguearme.
# url = 'https://www.linkedin.com/login/es
driver.get("https://github.com/login")
# Buscar usuario
driver.find_element_by_id("username").send_keys('username')
# Buscar contraseña.
driver.find_element_by_id("password").send_keys('password')
# Click
driver.find_element(By.CSS_SELECTOR, 'button[data-litms-control-urn="login-submit"]').click()
driver.implicitly_wait(3)
url= 'https://www.linkedin.com/jobs/search?keywords=software&location=Estados%20Unidos&geoId=103644278&trk=public_jobs_jobs-search-bar_search-submit&position=1&pageNum=0'
driver.get(url)
driver.implicitly_wait(3)
ult_altura = driver.execute_script("return document.body.scrollHeight")
while True:
# Ir al fondo de la pagina.
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Esperar a que carguen los jobs.
time.sleep(2)
# Gardar la ultima altura de la pagina, si es la misma frenar (porque tocamos fondo) sino seguimos bajando.
nueva_altura = driver.execute_script("return document.body.scrollHeight")
if nueva_altura == ult_altura:
break
ult_altura = nueva_altura
driver.implicitly_wait(3)
# Busca la clase ".jobs-search__results-list"
# Dentro de esa clase buscame todos los tags <li>
# Dentro de cada <li> buscame buscame un <a>
jobs = []
for element in driver.find_elements(By.CSS_SELECTOR, '.jobs-search__results-list li div.base-card'):
data = {}
data['titulo'] = element.find_element(By.CSS_SELECTOR, 'div.base-search-card__info h3.base-search-card__title').text
data['compania'] = element.find_element(By.CSS_SELECTOR, 'div.base-search-card__info h4.base-search-card__subtitle').text
data['location'] = element.find_element(By.CSS_SELECTOR, 'div.base-search-card__info span.job-search-card__location').text
data['url'] = element.find_element(By.CSS_SELECTOR, 'a.base-card__full-link').get_attribute('href')
jobs.append(data)
for job in jobs:
time.sleep(3)
driver.get(job['url'])
driver.implicitly_wait(3)
job['aplicantes'] = driver.find_element(By.CSS_SELECTOR, 'h4.top-card-layout__second-subline .num-applicants__caption').text
print(jobs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment