-
-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Desenvolvimento do webscraping - LinkedIn] Editar filtro #19
Comments
Arquivo da classe ScraperLinkedin no repositório Em cada iteração do loop percorrendo as urls de extração, o seguinte trecho de código faz o acesso ao modal de exportação e edita o filtro de acordo com o argumento self.get_element(xpath=self.XPATH_BUTTON_EXPORT).click()
self.get_element(
xpath=self.XPATH_BUTTON_DATERANGE, force_waiting=True
).click()
sleep(1)
d15, d30, d90, d365, custom_date = self.get_element(
xpath=self.XPATH_LI_DATERANGE, multiple=True, force_waiting=True
)
daterange_map = {
"d15": d15,
"15": d15,
"d30": d30,
"30": d30,
"d90": d90,
"90": d90,
"d365": d365,
"365": d365,
"custom_date": custom_date,
}
daterange_element = daterange_map.get(daterange)
daterange_element.click()
if daterange == "custom_date":
self.select_custom_daterange(custom_daterange) Após executar esse código é possível clicar no botão Outras funções utilizadas por esse trecho de código: Esse trecho de código está presente na função def get_element(
self,
xpath: str,
origin_element: WebElement = None,
multiple: bool = False,
force_waiting: bool = False,
timeout: int = 10,
) -> Union[bool, WebElement, List[WebElement]]:
"""
Obtém um elemento da pagina.
Args:
xpath (str): xpath do elemento.
origin_element (WebElement, optional): elemento de origem. Padrão None.
force_waiting (bool, optional): aguarda o elemento estar visível. Padrão False.
multiple (bool, optional): retorna uma lista. Padrão False.
Returns:
Union[bool, WebElement, List[WebElement]]: Elemento ou lista de elementos da página se encontrados ou False.
"""
origin_element = origin_element or self.driver
try:
if force_waiting and not multiple:
wait = WebDriverWait(origin_element, timeout)
return wait.until(EC.element_to_be_clickable((By.XPATH, xpath)))
elif multiple:
return origin_element.find_elements(By.XPATH, xpath)
else:
return origin_element.find_element(By.XPATH, xpath)
except Exception as e:
return False def select_custom_daterange(self, daterange: list) -> bool:
"""
Preenche o intervalo de datas customizado.
Args:
daterange (list): lista de datas customizadas.
Returns:
bool: Retorna True se as datas customizadas foram preenchidas com sucesso e False caso contrário.
"""
input_range_start = self.get_element(xpath=self.XPATH_INPUT_RANGE_START)
self.driver.execute_script("arguments[0].focus();", input_range_start)
self.driver.execute_script("arguments[0].value = '';", input_range_start)
input_range_start.send_keys(daterange[0])
input_range_end = self.get_element(xpath=self.XPATH_INPUT_RANGE_END)
self.driver.execute_script("arguments[0].focus();", input_range_end)
self.driver.execute_script("arguments[0].value = '';", input_range_end)
input_range_end.send_keys(daterange[-1]) |
Tarefa da Story: #16
Desenvolver webscraping Python, podendo usar selenium ou outra lib.
O webscraping deve logar no LinkedIn, acessar a página do SJ e extrair os dados para o AWS S3.
The text was updated successfully, but these errors were encountered: