" fname = url.split('/')[-1] ## get file name from url, which is everything after the last '/'\n",
" filenames.append(fname)\n",
" if os.path.isfile(fname):\n",
" print(\"Reading local version of\", fname)\n",
" else:\n",
" print(\"Downloading remote version for\", url)\n",
" urllib.request.urlretrieve(url, fname) ## this downloads url and save file to fname\n",
" \n",
" with gzip.open(fname, 'rt') as file:\n",
" raw_data[fname] = file.readlines()\n",
" print(raw_data[fname][0]) ## print first line to check it worked"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Vérification des données\n",
"\n",
"Les données sont des fichiers textes où chaque ligne est de la forme:\n",
"\n",
"\\[**timestamp**\\] **size** bytes from **url** (**ip**): icmp_seq=**icmp_seq** ttl=**ttl** time=**time**\n",
"\n",
"- **timestamp** est l'instant d'émission de la requête (flottant);\n",
"- **size** est la taille de la requête en octets (entier);\n",
"- **url** est l'url vers laquelle la requête a été envoyée (chaîne de caractères);\n",
"- **ip** est l'adresse ip de l'url précédente (chaîne de caractères);\n",
"- **icmp_seq** et **ttl** sont ignorées;\n",
"- **time** est le temps aller-retour entre l'ordinateur d'envoi et l'url spécifiée (flottant + chaîne de caractères).\n",
"\n",
"Pour vérifier les données, nous utilisons des expressions régulières. Les données vérifiées sont ensuites insérées dans un DataFrame de pandas pour traitement."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"hideOutput": true
},
"outputs": [],
"source": [
"import re\n",
"import pandas as pd\n",
"\n",
"pingoutput = re.compile(r'\\[(?P<timestamp>\\d*\\.\\d*)\\]' ## match timestamp as floating number\n",
" r' (?P<size>\\d*) bytes from ' ## match size as integer\n",
" r'(?P<url>(\\w[\\w\\-]*\\.)*\\w*) ' ## match simple urls\n",
" r'\\((?P<ip>\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\\)' ## match ips\n",
" r': icmp_seq=(?P<icmp_seq>\\d*) '## match icmp_seq\n",
" r'ttl=(?P<ttl>\\d*) ' ## match ttl\n",
" r'time=(?P<ping>\\d*\\.?\\d*) ms' ## match time with unit\n",