Skip to content
Extraits de code Groupes Projets
Valider b5314cc5 rédigé par Luc Pellissier's avatar Luc Pellissier
Parcourir les fichiers

Draft Paris

parent 937640e7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!12Draft: Paris
Ce commit fait partie de la requête de fusion !12. Les commentaires créés ici seront créés dans le contexte de cette requête de fusion.
Attrap_pref75.py 0 → 100644
+ 104
0
Voir le fichier @ b5314cc5
import os
import datetime
from bs4 import BeautifulSoup
from urllib.parse import unquote
from Attrap import Attrap
class Attrap_pref75(Attrap):
# Les RAA de Paris sont sur le site de la préfecture de région
# Île-de-France. On ne prend en compte que les RAA départementaux.Tant qu'à
# y être, on prend les RAA du département et de la région.
# Config
__HOST = 'https://www.prefectures-regions.gouv.fr'
__RAA_PAGE = {
'2024': f'{__HOST}/ile-de-france/ile-de-france/ile-de-france/Documents-publications/Recueil-des-actes-administratifs/Raa-du-departement-de-Paris-2024',
'2023': f'{__HOST}/ile-de-france/ile-de-france/ile-de-france/Documents-publications/Recueil-des-actes-administratifs/Raa-du-departement-de-Paris-2023',
'2022': f'{__HOST}/ile-de-france/ile-de-france/ile-de-france/Documents-publications/Recueil-des-actes-administratifs/Raa-du-departement-de-Paris-2022',
'2021': f'{__HOST}/ile-de-france/ile-de-france/ile-de-france/Documents-publications/Recueil-des-actes-administratifs/Raa-du-departement-de-Paris-2021',
'2020': f'{__HOST}/ile-de-france/ile-de-france/ile-de-france/Documents-publications/Recueil-des-actes-administratifs/Raa-du-departement-de-Paris-2020',
'2019': f'{__HOST}/ile-de-france/ile-de-france/ile-de-france/Documents-publications/Recueil-des-actes-administratifs/Raa-du-departement-de-Paris-2019',
'2018': f'{__HOST}/ile-de-france/ile-de-france/ile-de-france/Documents-publications/Recueil-des-actes-administratifs/Raa-du-departement-de-Paris-2018'
}
__USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0'
full_name = 'Préfecture de Paris'
short_code = 'pref75'
def __init__(self, data_dir):
super().__init__(data_dir, self.__USER_AGENT)
self.enable_tor(10)
def get_raa(self, keywords):
year_pages_to_parse = []
# Les RAA de Paris et de l'Île-de-France sont éparpillés sur des sous-pages par mois.
# Donc on parse la page principale à la recherche des sous-pages.
if self.not_before.year <= 2024:
year_pages_to_parse.append(self.__RAA_PAGE['2024'])
if self.not_before.year <= 2023:
year_pages_to_parse.append(self.__RAA_PAGE['2023'])
if self.not_before.year <= 2022:
year_pages_to_parse.append(self.__RAA_PAGE['2022'])
if self.not_before.year <= 2021:
year_pages_to_parse.append(self.__RAA_PAGE['2021'])
if self.not_before.year <= 2020:
year_pages_to_parse.append(self.__RAA_PAGE['2020'])
if self.not_before.year <= 2019:
year_pages_to_parse.append(self.__RAA_PAGE['2019'])
print(year_pages_to_parse)
pages_to_parse = []
for year_page in year_pages_to_parse:
page_content = self.get_page(year_page, 'get').content
# print(page_content)
month_pages = self.get_sub_pages(
page_content,
'ol li a',
self.__HOST,
False
)[::-1]
print(month_pages)
for month_page in month_pages:
pages_to_parse.append(month_page['url'])
print(pages_to_parse)
elements = []
for page in pages_to_parse:
page_content = self.get_page(page, 'get').content
for element in self.get_raa_elements(page_content):
elements.append(element)
self.parse_raa(elements, keywords)
self.mailer()
def get_raa_elements(self, page_content):
elements = []
# On charge le parser
soup = BeautifulSoup(page_content, 'html.parser')
# Pour chaque balise a, on regarde si c'est un PDF, et si oui on le parse
for a in soup.select('main div.container.main-container div.col-main article.article div.texte div a.link-download'):
if a.get('href') and a['href'].endswith('.pdf'):
if a['href'].startswith('/'):
url = f"{self.__HOST}{a['href']}"
else:
url = a['href']
url = unquote(url)
name = a.find('span')
guessed = Attrap.guess_date(a.get('href'),"([0-9]+.[0-9]+.[0-9]+)")"([0-9]+.[0-9]+.[0-9]+)")
print(guessed)
date = datetime.datetime.strptime(guessed, '%d.%m.%Y')
raa = Attrap.RAA(url, date, name)
elements.append(raa)
return elements
...@@ -60,6 +60,7 @@ available_administrations = [ ...@@ -60,6 +60,7 @@ available_administrations = [
'pref66', 'pref66',
'pref69', 'pref69',
'pref73', 'pref73',
'pref75',
'pref80', 'pref80',
'pref81', 'pref81',
'pref83', 'pref83',
......
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