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

prefPaca: ajout de la préfecture de Provence-Alpes-Côte-d'Azur

parent d3c28f66
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -274,3 +274,8 @@ test_prefIdf:
variables:
PREF: "prefIdf"
extends: .default_pref
test_prefPaca:
variables:
PREF: "prefPaca"
extends: .default_pref
import os
import datetime
from bs4 import BeautifulSoup
from urllib.parse import unquote
from Attrap import Attrap
class Attrap_prefPaca(Attrap):
# Config
__HOST = 'https://www.prefectures-regions.gouv.fr'
__RAA_PAGE = f'{__HOST}/provence-alpes-cote-dazur/Documents-publications'
__USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/115.0'
full_name = 'Préfecture de Provence-Alpes-Côte-d\'Azur'
short_code = 'prefPaca'
def __init__(self, data_dir):
super().__init__(data_dir, self.__USER_AGENT)
self.enable_tor(10)
def get_raa(self, keywords):
# On récupère les pages d'années
year_pages = []
for year_page in self.get_sub_pages_with_pager(
self.__RAA_PAGE,
'article.news-list-item header h2.news-list-title a',
'article.article div.content-pagination ul.pagination li.next a',
None,
self.__HOST
):
year = Attrap.guess_date(year_page['name'].strip(), 'RAA ([0-9]{4})').year
if year < 9999 and year >= self.not_before.year:
year_pages.append(year_page['url'])
elements = []
for year_page in year_pages:
page_content = self.get_page(year_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').get_text().strip()
# On devine la date du RAA à partir du nom de fichier
guessed = Attrap.guess_date(name, '((?:[0-9]{2}|[0-9]{1})(?:er){0,1}[ _](?:[a-zéû]{3,9})[ _](?:[0-9]{4}|[0-9]{2}))')
if (guessed == datetime.datetime(9999, 1, 1, 0, 0)):
date = None
else:
date = guessed
raa = Attrap.RAA(url, date, name)
elements.append(raa)
return elements
make: ppparis pref2b pref03 pref04 pref05 pref06 pref09 pref10 pref13 pref25 pref31 pref33 pref34 pref35 pref38 pref39 pref42 pref44 pref59 pref62 pref63 pref64 pref65 pref66 pref69 pref73 pref75 pref80 pref81 pref83 pref87 pref92 pref93 pref94 pref976 prefIdf
make: ppparis pref2b pref03 pref04 pref05 pref06 pref09 pref10 pref13 pref25 pref31 pref33 pref34 pref35 pref38 pref39 pref42 pref44 pref59 pref62 pref63 pref64 pref65 pref66 pref69 pref73 pref75 pref80 pref81 pref83 pref87 pref92 pref93 pref94 pref976 prefIdf prefPaca
ppparis:
bin/python3 cli.py ppparis
pref2b:
......@@ -71,5 +71,7 @@ pref976:
bin/python3 cli.py pref976
prefIdf:
bin/python3 cli.py prefIdf
prefPaca:
bin/python3 cli.py prefPaca
lint:
bin/pycodestyle --first --show-source --ignore=E501 *.py
......@@ -91,6 +91,7 @@ Vous pouvez également activer le safe mode en spécifiant la variable d'environ
- Préfecture du Val-de-Marne (identifiant : `pref94`)
- Préfecture de Mayotte (identifiant : `pref976`)
- Préfecture d'Île-de-France (identifiant : `prefIdf`)
- Préfecture de Provence-Alpes-Côte-d'Azur (identifiant : `prefPaca`)
## Contributions
......
......@@ -79,7 +79,8 @@ available_administrations = [
'pref93',
'pref94',
'pref976',
'prefIdf'
'prefIdf',
'prefPaca'
]
# Début du script
......
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