PhDr. Mgr. Jeroným Klimeš, Ph.D. 2021-12-14
Pokud potřebujete něco sdělit všem poslancům, zjistíte, že nikde neexistuje oficiální seznam všech jejich emailů. Hodí se tedy proto mít skript, který je vygeneruje z stránek Poslanecké sněmovny: www.psp.cz.
Pokud trochu vládnete Linuxem, můžete využít následující Bash skript. Stáhněte to jako soubor, protože je to v kodovani UTF-8. Windows musí překonvertovat do CP-1250.
#!/bin/bash # vse pouze pro Linux (ubuntu) mkdir emaily_poslancu cd emaily_poslancu # timto prikazem byly stazeny vsechny soubory s emaily poslancu # wget --timeout 5 --continue --mirror --base=https://www.psp.cz/sqw/ https://www.psp.cz/sqw/hp.sqw?k=192 # bezi to dlouho, zaplni to adresar spoustou souboru, jen nektere jsou uzitecne. vystup=emaily$(date +%Y-%m-%d_%H-%M-%S) # nazev textoveho souboru, kde budou ulozeny emaily # mkdir "emaily" i=0 for soubor in *; do vyskyt=$( grep -c "<a href=\"hp.sqw?k=192\">" $soubor) # takto se vybraly jen ty soubory, ktere maji kontaktni informace if [ $vyskyt -gt 0 ]; then (( i++ )) jmeno=$(sed 's/</\n</g' $soubor | sed -n 's/<h1>//p' | sed 's/ / /p;' | iconv -f windows-1250 -t utf8 ) #kazdy tag na novy radek najdi nadpis odstran pevne mezery zkonvertuj z 1250 email=$(grep -Po "mailto:\K(.*?)\"" "$soubor" | sed "s/\"//" | tr "\n" ";" | iconv -f windows-1250 -t utf8 ) # najdi mailto odstran uvozovky stredni misto odstavce zkonvertuj 1250 echo -e "$email \t $jmeno " >> $vystup.tmp echo -e "$i. \t $jmeno \t $email \t $soubor" # read fi done sort $vystup.tmp |uniq | LC_ALL=C sort -n -t$'\t' -k2 >$vystup.txt rm $vystup.tmp less $vystup.txt # docasny vystup na obrazovku echo Emaily poslancu jsou ulozeny do souboru $vystup.txt. exit # nasleduji poznamky a odpad Analyza souboru: <a href="hp.sqw?k=192"> musi obsahovat toto "Nacházíte se: Úvod › Poslanci a orgány › Poslanci " poslanci maji tento odkaz <div class="block block-contact-information"> tady je em adresa poslance >hanzelt@psp.cz< <a href="mailto:hanzelt@psp.cz" ... takto vypada email adresa Tady je jmeno <title>PhDr. Ivan Bartoš, Ph.D.</title>