Emaily poslanců k 2021-01-30

PhDr. Mgr. Jeroným Klimeš, Ph.D. 2021-01-30

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.

#Vlastní skript

#Konečný seznam


#!/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/&nbsp;/ /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>