-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprofessori.py
72 lines (65 loc) · 2.64 KB
/
professori.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
# coding=utf-8
import bs4
import requests
import json
def getanagrafica(linkscheda):
diz = {"ufficio": "", "email": "", "sito": "", "telefono": "", "fax": ""}
sorgente = requests.get("http://web.dmi.unict.it"+str(linkscheda)).text
soup = bs4.BeautifulSoup(sorgente, "html.parser")
div = soup.find(id="anagrafica")
for bi in div.find_all("b"):
if bi.text == "Ufficio:":
diz['ufficio'] = bi.next_sibling
elif bi.text == "Email:":
diz['email'] = bi.next_sibling.next_sibling.text
elif bi.text == "Sito web:":
diz['sito'] = bi.next_sibling.next_sibling.text
elif bi.text == "Telefono:":
diz['telefono'] = bi.next_sibling
elif bi.text == "Fax:":
diz['fax'] = bi.next_sibling
return diz
def main():
url_prof = "http://web.dmi.unict.it/docenti"
items = []
count = 0
contratto = False
madrelingua = False
href = ""
cognome = ""
nome = ""
ruolo = ""
sorgente = requests.get(url_prof).text
soup = bs4.BeautifulSoup(sorgente, "html.parser")
table = soup.find(id="persone")
for link in table.find_all("a"):
if not link.has_attr("name"):
href = link['href']
cognome = link.text.split(" ")[0]
nome = ""
for i in range(len(link.text.split(" "))-1):
nome += link.text.split(" ")[i+1] + " "
if contratto:
ruolo = "Contratto"
elif madrelingua:
ruolo = "Lettore madrelingua"
else:
ruolo = link.parent.next_sibling.text.split(" ")[1] if len(
link.parent.next_sibling.text.split(" ")) > 1 else link.parent.next_sibling.text
if link.parent.parent.next_sibling.next_sibling != None and link.parent.parent.next_sibling.next_sibling.find("td").find("b") != None:
if not contratto:
contratto = True
else:
contratto = False
madrelingua = True
count += 1
anagrafica = getanagrafica(href)
items.append({"ID": count, "Ruolo": ruolo.title(), "Nome": nome,
"Cognome": cognome, "Scheda DMI": "http://web.dmi.unict.it" + href,
"Fax": anagrafica['fax'], "Telefono": anagrafica['telefono'],
"Email": anagrafica['email'], "Ufficio" : anagrafica['ufficio'],
"Sito" : anagrafica['sito']})
with open('professori.json', 'w') as outfile:
json.dump(items, outfile, sort_keys=True, indent=4)
if __name__ == "__main__":
main()