Skip to content
Extraits de code Groupes Projets
Valider 64b7dc1e rédigé par Bastien Le Querrec's avatar Bastien Le Querrec
Parcourir les fichiers

RAAspotter: relance les requêtes en timeout

Fixes #9
parent f677fc7d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -10,6 +10,7 @@ import datetime ...@@ -10,6 +10,7 @@ import datetime
from urllib.parse import quote from urllib.parse import quote
from selenium import webdriver from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions from selenium.webdriver.support import expected_conditions
...@@ -239,7 +240,7 @@ class RAAspotter: ...@@ -239,7 +240,7 @@ class RAAspotter:
return False return False
# On démarre le navigateur # On démarre le navigateur
def get_session(self, url, wait_element=""): def get_session(self, url, wait_element, remaining_retries=0):
webdriver_options = webdriver.ChromeOptions() webdriver_options = webdriver.ChromeOptions()
webdriver_options.add_argument("--no-sandbox") webdriver_options.add_argument("--no-sandbox")
webdriver_options.add_argument("--disable-extensions") webdriver_options.add_argument("--disable-extensions")
...@@ -261,17 +262,25 @@ class RAAspotter: ...@@ -261,17 +262,25 @@ class RAAspotter:
# Téléchargement de l'URL # Téléchargement de l'URL
browser.get(url) browser.get(url)
if not wait_element == "": if wait_element is not None:
# On attend que le navigateur ait passé les tests anti-robots et # On attend que le navigateur ait passé les tests anti-robots et
# que le contenu s'affiche # que le contenu s'affiche
WebDriverWait(browser, 120).until( try:
expected_conditions.presence_of_element_located( WebDriverWait(browser, 60).until(
( expected_conditions.presence_of_element_located(
By.ID, (
wait_element By.ID,
wait_element
)
) )
) )
) except TimeoutException as exc:
logger.warning(f'TimeoutException: {exc}')
if remaining_retries > 0:
return self.get_session(url, wait_element, (remaining_retries - 1))
else:
raise TimeoutException(exc)
page_content = browser.page_source page_content = browser.page_source
# On récupère les cookies du navigateur pour les réutiliser plus tard # On récupère les cookies du navigateur pour les réutiliser plus tard
......
...@@ -24,7 +24,7 @@ class RAAspotter_ppparis(RAAspotter): ...@@ -24,7 +24,7 @@ class RAAspotter_ppparis(RAAspotter):
self.print_output(f'Termes recherchés: {keywords}') self.print_output(f'Termes recherchés: {keywords}')
self.print_output('') self.print_output('')
page_content = self.get_session() page_content = self.get_session(self.__RAA_PAGE, self.__WAIT_ELEMENT, 3)
raa_elements = self.get_raa_elements(page_content) raa_elements = self.get_raa_elements(page_content)
self.parse_raa(raa_elements, keywords.split(',')) self.parse_raa(raa_elements, keywords.split(','))
self.mailer() self.mailer()
...@@ -52,5 +52,3 @@ class RAAspotter_ppparis(RAAspotter): ...@@ -52,5 +52,3 @@ class RAAspotter_ppparis(RAAspotter):
elements.append(raa) elements.append(raa)
return elements return elements
def get_session(self):
return super().get_session(self.__RAA_PAGE, self.__WAIT_ELEMENT)
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter