-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfonctions.py
91 lines (63 loc) · 3.17 KB
/
fonctions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# -*- coding: utf-8 -*-
import re
def recup_dates(contenu):
'''Prend entrée un objet de type "soup" et renvoie une liste
de dates de départ'''
soup_dates = contenu.find_all("span", attrs={"class": "date"})
liste_resultats = []
for d in soup_dates:
liste_resultats.append(d.contents[0].strip())
return liste_resultats
#La même chose avec des regex
##regex_dates = re.compile('[a-z]{3} [0-9][0-9] [a-z]{3}')
##liste_dates = re.findall(regex_dates, str(soup_dates))
def recup_prix(contenu):
'''Prend entrée un objet de type "soup" et renvoie une liste
de prix pour chacun des billets renvoyés par la requête'''
soup_prix = contenu.find_all("span", attrs={"class": "prix"})
regex_prix = re.compile('[0-9]{2}')
liste_resultats = re.findall(regex_prix, str(soup_prix))
return liste_resultats
def recup_heures(contenu):
'''Prend entrée un objet de type "soup" et renvoie une liste
d'heures pour chacun des billets renvoyés par la requête'''
soup_heures = contenu.find_all("span", attrs={"class": "heure-rech"})
liste_resultats = []
for h in soup_heures:
liste_resultats.append(h.contents[0].strip())
return liste_resultats
def recup_contacts(contenu):
'''Prend entrée un objet de type "soup" et renvoie une liste
de contacts reçus pour chacun des billets renvoyés par la requête'''
soup_contacts = contenu.find_all("span", attrs={"class": "contacts"})
regex_contacts = re.compile('<strong>([0-9]*)</strong>')
liste_resultats = re.findall(regex_contacts, str(soup_contacts))
return liste_resultats
def recup_ddepot(contenu):
'''Prend entrée un objet de type "soup" et renvoie une liste
de contacts reçus pour chacun des billets renvoyés par la requête'''
soup_ddepot = contenu.find_all("span", attrs={"class": "contacts"})
regex_dates_depot = re.compile('([0-9][0-9]/[0-9][0-9])')
liste_resultats = re.findall(regex_dates_depot, str(soup_ddepot))
return liste_resultats
def recup_liens(contenu):
liens_tag = []
for link in contenu.find_all('a'):
liens_tag.append((link.get('href')))
liens_tag = str(liens_tag) #Conversion en chaîne de caractère pour rendre la liste exploitable par une regex
regex_lien = re.compile('http://www.trocdestrains.com/billet-de-train\S*') #Regex à revoir: bug quand il y a un S majuscule à la fin du lien
liste_resultats = re.findall(regex_lien, liens_tag)
return liste_resultats
def recup_villes(soup):
'''Parse le contenu à ma recherche des villes de départ de chaque billet. Prend un objet soup en paramètre'''
toutesGares = soup.find_all("span", attrs={"class": "gare-rech"})
listeRes = re.findall(r'\t[A-Za-z ]*\r', str(toutesGares))
#On épure la listeRes pour retirer les caractères '\t' et '\r' situés en début et en fin
#de chaque entrée. On met le tout dans une nouvelle liste, listeRes2.
listeRes2 = []
for elt in listeRes:
chainePropre = elt.lstrip('\t')
chainePropre = chainePropre.rstrip('\r')
listeRes2.append(chainePropre)
return listeRes2