Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
Attrap
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de conteneur
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Conditions générales et politique de confidentialité
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
La Quadrature du Net
Attrap
Validations
b5314cc5
Valider
b5314cc5
rédigé
Il y a 9 mois
par
Luc Pellissier
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Draft Paris
parent
937640e7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion
!12
Draft: Paris
Modifications
2
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
2 fichiers modifiés
Attrap_pref75.py
+104
-0
104 ajouts, 0 suppression
Attrap_pref75.py
cli.py
+1
-0
1 ajout, 0 suppression
cli.py
avec
105 ajouts
et
0 suppression
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
Ce diff est replié.
Cliquez pour l'agrandir.
cli.py
+
1
−
0
Voir le fichier @
b5314cc5
...
@@ -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
'
,
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter