{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Robo-MZOIP - ocjene prihvatljivosti za ekološku mrežu Natura 2000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Uvod\n",
"\n",
"### Natura 2000\n",
"\n",
"Zakonski okvir: EU Direktiva o pticama (79/409/EEC), Direktiva o staništima (92/43/EEC)\n",
"\n",
"http://ec.europa.eu/environment/nature/legislation/birdsdirective/index_en.htm\n",
"\n",
"http://ec.europa.eu/environment/nature/legislation/habitatsdirective/index_en.htm\n",
"\n",
" * Područja očuvanja značajna za ptice\n",
" * Područja očuvanja značajna za vrste i staništa\n",
"\n",
" * Postupak ocjene prihvatljivosti za ekološku mrežu\n",
" - Prethodna ocjena\n",
" - Glavna ocjena\n",
"\n",
"## Problem\n",
"\n",
" * Nepregledna stranica Ministarstva zaštite okoliša i energetike.\n",
" * Dokumenti se dodaju na način da je nemoguće sustavno pratiti njihovo dodavanje.\n",
"\n",
"## Rješenje\n",
"\n",
" * Web scraper (python3 + requests + beautiful soup 4)\n",
" * Twitter"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [],
"source": [
"import argparse\n",
"from datetime import datetime\n",
"import os\n",
"import re\n",
"import sys\n",
"import requests\n",
"from bs4 import BeautifulSoup\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definicija stranica koja nas zanimaju:"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [],
"source": [
"BASE_URL_MZOE = 'http://mzoe.hr'\n",
"BASE_URL_OPEM = 'http://mzoe.hr/hr/priroda/ekoloska-mreza-natura-2000.html'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Dohvaćanje html stranice, i kreiranje `soup` objekta sa stranice Ministarstva:"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [],
"source": [
"def get_soup(full_url):\n",
" \"\"\"Dohvaca soup objekt s mreznih stranica.\n",
"\n",
" Args:\n",
" full_url (str): path do stranice.\n",
" Returns:\n",
" soup: beautifulsoup object.\n",
" \"\"\"\n",
" r = requests.get(full_url)\n",
" soup = BeautifulSoup(r.content, 'lxml')\n",
" return soup"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [],
"source": [
"soup = get_soup(BASE_URL_OPEM)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Glavne ocjene u nadležnosti Ministarstva"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [],
"source": [
"opem = soup.find('div', 'accordion').find_all('div', 'accordion')\n",
"a = opem[0].find_all('a')"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"16.02.2018. - INFORMACIJA o zahtjevu za provođenje postupka Glavne ocjene prihvatljivosti za ekološku mrežu [PDF 630.39 kB]\n",
"05.12.2017. - OBAVIJEST o javnoj raspravi [PDF 777.69 kB]\n"
]
}
],
"source": [
"print(a[0])\n",
"print(a[4])"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Uređenje vodnog puta rijeke Dunav kod Sotina na području Vukovarsko-srijemske županije\n",
"http://mzoe.hr/doc/16022018_-_informacija_o_zahtjevu_za_provodenje_postupka_glavne_ocjene_prihvatljivosti_za_ekolosku_mrezu.pdf\n",
"Radovi sanacije korita, uklanjanje nanosa i radovi redovitog održavanja vodnog režima na rijeci Bregani\n",
"http://mzoe.hr/doc/05122017_-_obavijest_o_javnoj_raspravi.pdf\n"
]
}
],
"source": [
"print(a[0].parent.parent.parent.previous_sibling.previous_sibling.get_text().strip())\n",
"print(BASE_URL_MZOE + a[0].get('href'))\n",
"print(a[4].parent.parent.parent.previous_sibling.previous_sibling.get_text().strip())\n",
"print(BASE_URL_MZOE + a[4].get('href'))"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [],
"source": [
"opem_raw = []\n",
"for link in a:\n",
" red = [link.parent.parent.parent.previous_sibling.previous_sibling.get_text().strip(),\n",
" link.get_text(),\n",
" BASE_URL_MZOE + link.get('href')]\n",
" opem_raw.append(red)\n",
"opem_pd = pd.DataFrame(opem_raw)"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Uređenje vodnog puta rijeke Dunav kod Sotina n... | \n",
" 16.02.2018. - INFORMACIJA o zahtjevu za provođ... | \n",
" http://mzoe.hr/doc/16022018_-_informacija_o_za... | \n",
"
\n",
" \n",
" 1 | \n",
" Uređenje vodnog puta rijeke Dunav kod Sotina n... | \n",
" 24.11.2015. - RJEŠENJE Ministarstva od 11. stu... | \n",
" http://mzoe.hr/doc/24112015_-_rjesenje_minista... | \n",
"
\n",
" \n",
" 2 | \n",
" Uređenje vodnog puta rijeke Dunav kod Sotina n... | \n",
" 02.10.2015. - INFORMACIJA o zahtjevu za provođ... | \n",
" http://mzoe.hr/doc/02102015_-_informacija_o_za... | \n",
"
\n",
" \n",
" 3 | \n",
" Izgradnja cestovnog mosta preko rijeke Drave n... | \n",
" 13.12.2017. - INFORMACIJA o zahtjevu za provođ... | \n",
" http://mzoe.hr/doc/13122017_-_informacija_o_za... | \n",
"
\n",
" \n",
" 4 | \n",
" Radovi sanacije korita, uklanjanje nanosa i ra... | \n",
" 05.12.2017. - OBAVIJEST o javnoj raspravi [PDF... | \n",
" http://mzoe.hr/doc/05122017_-_obavijest_o_javn... | \n",
"
\n",
" \n",
" 5 | \n",
" Radovi sanacije korita, uklanjanje nanosa i ra... | \n",
" 05.12.2017. - STUDIJA Glavne ocjene prihvatlji... | \n",
" http://mzoe.hr/doc/05122017_-_studija_glavne_o... | \n",
"
\n",
" \n",
" 6 | \n",
" Radovi sanacije korita, uklanjanje nanosa i ra... | \n",
" 07.11.2017. - INFORMACIJA o zahtjevu za provođ... | \n",
" http://mzoe.hr/doc/07112017_-_informacija_o_za... | \n",
"
\n",
" \n",
" 7 | \n",
" Pregrada na rukavcu starog toka rijeke Drave | \n",
" 22.11.2017. - RJEŠENJE Ministarstva od 21. stu... | \n",
" http://mzoe.hr/doc/22112017_-_rjesenje_minista... | \n",
"
\n",
" \n",
" 8 | \n",
" Pregrada na rukavcu starog toka rijeke Drave | \n",
" 12.09.2017. - OBAVIJEST o javnoj raspravi [PDF... | \n",
" http://mzoe.hr/doc/12092017_-_obavijest_o_javn... | \n",
"
\n",
" \n",
" 9 | \n",
" Pregrada na rukavcu starog toka rijeke Drave | \n",
" 12.09.2017. - STUDIJA Glavne ocjene prihvatlji... | \n",
" http://mzoe.hr/doc/12092017_-_studija_glavne_o... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0 \\\n",
"0 Uređenje vodnog puta rijeke Dunav kod Sotina n... \n",
"1 Uređenje vodnog puta rijeke Dunav kod Sotina n... \n",
"2 Uređenje vodnog puta rijeke Dunav kod Sotina n... \n",
"3 Izgradnja cestovnog mosta preko rijeke Drave n... \n",
"4 Radovi sanacije korita, uklanjanje nanosa i ra... \n",
"5 Radovi sanacije korita, uklanjanje nanosa i ra... \n",
"6 Radovi sanacije korita, uklanjanje nanosa i ra... \n",
"7 Pregrada na rukavcu starog toka rijeke Drave \n",
"8 Pregrada na rukavcu starog toka rijeke Drave \n",
"9 Pregrada na rukavcu starog toka rijeke Drave \n",
"\n",
" 1 \\\n",
"0 16.02.2018. - INFORMACIJA o zahtjevu za provođ... \n",
"1 24.11.2015. - RJEŠENJE Ministarstva od 11. stu... \n",
"2 02.10.2015. - INFORMACIJA o zahtjevu za provođ... \n",
"3 13.12.2017. - INFORMACIJA o zahtjevu za provođ... \n",
"4 05.12.2017. - OBAVIJEST o javnoj raspravi [PDF... \n",
"5 05.12.2017. - STUDIJA Glavne ocjene prihvatlji... \n",
"6 07.11.2017. - INFORMACIJA o zahtjevu za provođ... \n",
"7 22.11.2017. - RJEŠENJE Ministarstva od 21. stu... \n",
"8 12.09.2017. - OBAVIJEST o javnoj raspravi [PDF... \n",
"9 12.09.2017. - STUDIJA Glavne ocjene prihvatlji... \n",
"\n",
" 2 \n",
"0 http://mzoe.hr/doc/16022018_-_informacija_o_za... \n",
"1 http://mzoe.hr/doc/24112015_-_rjesenje_minista... \n",
"2 http://mzoe.hr/doc/02102015_-_informacija_o_za... \n",
"3 http://mzoe.hr/doc/13122017_-_informacija_o_za... \n",
"4 http://mzoe.hr/doc/05122017_-_obavijest_o_javn... \n",
"5 http://mzoe.hr/doc/05122017_-_studija_glavne_o... \n",
"6 http://mzoe.hr/doc/07112017_-_informacija_o_za... \n",
"7 http://mzoe.hr/doc/22112017_-_rjesenje_minista... \n",
"8 http://mzoe.hr/doc/12092017_-_obavijest_o_javn... \n",
"9 http://mzoe.hr/doc/12092017_-_studija_glavne_o... "
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"opem_pd.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Glavne ocjene u nadležnosti županija/grada Zagreba"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [],
"source": [
"a1 = opem[1].find_all('a')\n",
"opem_z_raw = []\n",
"for link in a1:\n",
" red = [link.parent.parent.parent.previous_sibling.previous_sibling.get_text().strip(),\n",
" link.get_text(),\n",
" BASE_URL_MZOE + link.get('href')]\n",
" opem_z_raw.append(red)\n",
"opem_z_pd = pd.DataFrame(opem_z_raw)"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Zaštita naselja Gradac i grada Pleternice od v... | \n",
" 18.10.2016. - OBAVIJEST o provedbi javne raspr... | \n",
" http://mzoe.hr/doc/18102016_-_obavijest_o_prov... | \n",
"
\n",
" \n",
" 1 | \n",
" Ekološka revitalizacija područja starog korita... | \n",
" 22.09.2016. - OBJAVA javne rasprave o Studiji ... | \n",
" http://mzoe.hr/doc/22092016_-_objava_javne_ras... | \n",
"
\n",
" \n",
" 2 | \n",
" Održavanje korita rijeke Dretulje na području ... | \n",
" 19.05.2016. - OBJAVA javne rasprave o Studiji ... | \n",
" http://mzoe.hr/doc/19052016_-_objava_javne_ras... | \n",
"
\n",
" \n",
" 3 | \n",
" Obnova desnog nasipa rijeke Save s obaloutvrda... | \n",
" 16.12.2015. - OBJAVA javne rasprave o Studiji ... | \n",
" http://mzoe.hr/doc/16122015_-_objava_javne_ras... | \n",
"
\n",
" \n",
" 4 | \n",
" Lječilišno-turistički kompleks 'Meline' u zalj... | \n",
" 05.11.2015. - OBJAVA javne rasprave o Studiji ... | \n",
" http://mzoe.hr/doc/05112015_-_informacija_o_po... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0 \\\n",
"0 Zaštita naselja Gradac i grada Pleternice od v... \n",
"1 Ekološka revitalizacija područja starog korita... \n",
"2 Održavanje korita rijeke Dretulje na području ... \n",
"3 Obnova desnog nasipa rijeke Save s obaloutvrda... \n",
"4 Lječilišno-turistički kompleks 'Meline' u zalj... \n",
"\n",
" 1 \\\n",
"0 18.10.2016. - OBAVIJEST o provedbi javne raspr... \n",
"1 22.09.2016. - OBJAVA javne rasprave o Studiji ... \n",
"2 19.05.2016. - OBJAVA javne rasprave o Studiji ... \n",
"3 16.12.2015. - OBJAVA javne rasprave o Studiji ... \n",
"4 05.11.2015. - OBJAVA javne rasprave o Studiji ... \n",
"\n",
" 2 \n",
"0 http://mzoe.hr/doc/18102016_-_obavijest_o_prov... \n",
"1 http://mzoe.hr/doc/22092016_-_objava_javne_ras... \n",
"2 http://mzoe.hr/doc/19052016_-_objava_javne_ras... \n",
"3 http://mzoe.hr/doc/16122015_-_objava_javne_ras... \n",
"4 http://mzoe.hr/doc/05112015_-_informacija_o_po... "
]
},
"execution_count": 146,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"opem_z_pd.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prethodne ocjene prihvatljivosti za ekološku mrežu"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {},
"outputs": [],
"source": [
"prethodne = soup.find_all('div', 'accordion')[3]"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [],
"source": [
"godpattern = re.compile(r\".*?(\\d{4}).*\")"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [],
"source": [
"prethodne_god = prethodne.find_all('h3')\n",
"prethodne_raw = []\n",
"for god in prethodne_god:\n",
" dokumenti = god.next_sibling.next_sibling.find_all('a')\n",
" for dok in dokumenti:\n",
" red = [re.sub(godpattern,\n",
" \"\\\\1\",\n",
" god.get_text().strip()),\n",
" dok.get_text(),\n",
" BASE_URL_MZOE + dok.get('href')]\n",
" prethodne_raw.append(red)\n",
"prethodne_pd = pd.DataFrame(prethodne_raw)"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 2018 | \n",
" 02.03.2018. - Izgradnja peradarnika za uzgoj p... | \n",
" http://mzoe.hr/doc/02032018_-_izgradnja_perada... | \n",
"
\n",
" \n",
" 1 | \n",
" 2018 | \n",
" 27.02.2018. - Izgradnja drvene pješačke staze ... | \n",
" http://mzoe.hr/doc/27022018_-_izgradnja_drvene... | \n",
"
\n",
" \n",
" 2 | \n",
" 2018 | \n",
" 26.02.2018. - Prenamjena poljoprivrednog zemlj... | \n",
" http://mzoe.hr/doc/26022018_-_prenamjena_poljo... | \n",
"
\n",
" \n",
" 3 | \n",
" 2018 | \n",
" 21.02.2018. - Županijska razvojna strategija P... | \n",
" http://mzoe.hr/doc/21022018_-_zupanijska_razvo... | \n",
"
\n",
" \n",
" 4 | \n",
" 2018 | \n",
" 16.02.2018. - Autocesta A7 dionica između čvor... | \n",
" http://mzoe.hr/doc/16022018_-_autocesta_a7_dio... | \n",
"
\n",
" \n",
" 5 | \n",
" 2018 | \n",
" 16.02.2018. - Uzgajalište školjaka u Blacama, ... | \n",
" http://mzoe.hr/doc/16022018_-_uzgajaliste_skol... | \n",
"
\n",
" \n",
" 6 | \n",
" 2018 | \n",
" 13.02.2018. - Rekonstrukcija (nadogradnja i pr... | \n",
" http://mzoe.hr/doc/13022018_-_rekonstrukcija_n... | \n",
"
\n",
" \n",
" 7 | \n",
" 2018 | \n",
" 09.02.2018. - III. Izmjene i dopune Prostornog... | \n",
" http://mzoe.hr/doc/09022018_-_iii_izmjene_i_do... | \n",
"
\n",
" \n",
" 8 | \n",
" 2018 | \n",
" 06.02.2018. - Prenamjena poljoprivrednog zemlj... | \n",
" http://mzoe.hr/doc/06022018_-_prenamjena_poljo... | \n",
"
\n",
" \n",
" 9 | \n",
" 2018 | \n",
" 06.02.2018. - Transformatorska stanica KTS 10(... | \n",
" http://mzoe.hr/doc/06022018_-_transformatorska... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0 1 \\\n",
"0 2018 02.03.2018. - Izgradnja peradarnika za uzgoj p... \n",
"1 2018 27.02.2018. - Izgradnja drvene pješačke staze ... \n",
"2 2018 26.02.2018. - Prenamjena poljoprivrednog zemlj... \n",
"3 2018 21.02.2018. - Županijska razvojna strategija P... \n",
"4 2018 16.02.2018. - Autocesta A7 dionica između čvor... \n",
"5 2018 16.02.2018. - Uzgajalište školjaka u Blacama, ... \n",
"6 2018 13.02.2018. - Rekonstrukcija (nadogradnja i pr... \n",
"7 2018 09.02.2018. - III. Izmjene i dopune Prostornog... \n",
"8 2018 06.02.2018. - Prenamjena poljoprivrednog zemlj... \n",
"9 2018 06.02.2018. - Transformatorska stanica KTS 10(... \n",
"\n",
" 2 \n",
"0 http://mzoe.hr/doc/02032018_-_izgradnja_perada... \n",
"1 http://mzoe.hr/doc/27022018_-_izgradnja_drvene... \n",
"2 http://mzoe.hr/doc/26022018_-_prenamjena_poljo... \n",
"3 http://mzoe.hr/doc/21022018_-_zupanijska_razvo... \n",
"4 http://mzoe.hr/doc/16022018_-_autocesta_a7_dio... \n",
"5 http://mzoe.hr/doc/16022018_-_uzgajaliste_skol... \n",
"6 http://mzoe.hr/doc/13022018_-_rekonstrukcija_n... \n",
"7 http://mzoe.hr/doc/09022018_-_iii_izmjene_i_do... \n",
"8 http://mzoe.hr/doc/06022018_-_prenamjena_poljo... \n",
"9 http://mzoe.hr/doc/06022018_-_transformatorska... "
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"prethodne_pd.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## To do\n",
"\n",
" * Snimanje u .tsv tablice\n",
" * Integracija u `puobot.py`\n",
" * Twitter upload"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}