1+ """Python script for genererating an html page
2+ with space debris statistics. Data sources:
3+ https://www.esa.int/Safety_Security/Space_Debris/Space_debris_by_the_numbers
4+ https://sdup.esoc.esa.int/discosweb/statistics/
5+ https://www.sdo.esoc.esa.int/environment_report/Space_Environment_Report_latest.pdf
6+ """
7+
8+ import os
9+ import urllib .request
10+
11+ from beautifulsoup_supply import TAIL , mk_head , get_soup
12+
13+
14+ SD_URL = 'https://sdup.esoc.esa.int/discosweb/statistics/embed/bythenumbers'
15+
16+
17+ def get_sd (soup ):
18+ """Parse html, get date of last page update,
19+ statistics of space debris."""
20+ months_dct = {"January" : "января" , "April" : "апреля" , "May" : "мая" , "July" : "июля" , "August" : "августа" , "September" : "сентября" }
21+ date = soup .find ("p" ).text .split ()[4 :]
22+ date [1 ] = months_dct [date [1 ]]
23+ dd = soup .find ("dl" ).findAll ("dd" )
24+ stats = [dd [x ].text .split ()[1 ] for x in range (5 )]
25+ stats .append (dd [5 ].text .split ()[2 ])
26+ stats .append (dd [6 ].text .split ()[2 ])
27+ debrs_modelled = dd [7 ].text .split ()
28+ debrs_modelled = [debrs_modelled [0 ], debrs_modelled [6 ], debrs_modelled [16 ]]
29+ return " " .join (date ), stats , debrs_modelled
30+
31+
32+ soup = get_soup (SD_URL )
33+ DATE , stats , DEBR_MODEL = get_sd (soup )
34+
35+ HEAD = mk_head ("Космический мусор: статистика" , style = "stats.css" , script = "" )
36+ BODY = f"""<body">
37+ <div id="stats" class="container show">
38+ <h1 id="header">Космический мусор: статистика от { DATE } года</h1>
39+ <div class="list">
40+ <ul>
41+ <li>Количество запусков ракет с начала космической эры: около <span class="yellow">{ stats [0 ]} </span></li>
42+ <li>Количество запущенных ими спутников: около <span class="yellow">{ stats [1 ]} </span></li>
43+ <li>Из них до сих пор на орбите: около <span class="yellow">{ stats [2 ]} </span></li>
44+ <li>Из них до сих пор функционируют: около <span class="yellow">{ stats [3 ]} </span></li>
45+ <li>Объектов отслеживается Сетью Космического Наблюдения США: около <span class="yellow">{ stats [4 ]} </span></li>
46+ <li>Оцениваемое количество событий, приводящих к фрагментации: более <span class="yellow">{ stats [5 ]} </span></li>
47+ <li>Полная масса космических объектов на орбите Земли: более <span class="yellow">{ stats [6 ]} </span> тонн</li>
48+ </ul>
49+ </div>
50+ <div id="footer">
51+ <h2>Центр Астрономического и космического образования</h2>
52+ </div>
53+ </div>
54+ """
55+
56+ """
57+ <li>Количество находящихся на орбите объектов космического мусора (Оценки по статистическим моделям):
58+ <ul>
59+ <li><span class="yellow">{DEBR_MODEL[0]}</span> объектов более 10 см
60+ <li><span class="yellow">{DEBR_MODEL[1]}</span> объектов от 1 до 10 см
61+ <li><span class="yellow">{DEBR_MODEL[2]}</span> миллионов объектов от 1 мм до 1 см
62+ </ul>
63+ </li>
64+ """
65+ with open (os .path .join (os .pardir , 'cosm' , 'debris' , 'index.html' ), 'w' , encoding = "utf8" ) as handle :
66+ print (HEAD + BODY + TAIL , file = handle )
0 commit comments