wget: Kuidas tõmmata palju faile: piibel.net kõigi peatükkide tõmbamise näitel. Kuna antud veebilehe haldajad juba arendavad XML APIt, siis varsti kirjutan siia näite mingi keskonna kohta, millel veel kohast liidest pole.
Neid skripte ma kasutasin, kuid enne uuesti kasutamist tuleks üle vaadata. HTML parsimiseks kasutasin peamiselt PHP’d ja veidi sed, awk, tr, perl ja OS X textutil. HTML kodeering ja kood on natuke vigane ja mis raskendab veidi sellest sisu kätte saamist. Varsti lisan mõne lõigu html2csv.php failist.
grep regexp , et saada sisukorra html seest kõik read raamatu lühi ja täisnimega, ning peatükkide arvu.
#find: (genNum)(\(')([A-Za-z0-9',]+)(\);)
#replace: array\2\3\4),
Raamatu nimed ja peatükkide arvud võib üle vaadata, muidu tuleks mõned käsitsi lisada.
mkdir -m 755 “./Piibel_dl”; cd ‘Piibel_dl’; pwd; RMNIMED=( “1ms” “2ms” “3ms” “4ms” “5ms” “Jos” “Km” “Rt” “1Sm” “2Sm” “1Kn” “2Kn” “1Aj” “2Aj” “Esr” “Ne” “Est” “Ii” “Ps” “Õp” “Kg” “Ül” “Js” “Jr” “Nl” “Hs” “Tn” “Ho” “Jl” “Am” “Ob” “Jn” “Mi” “Na” “Ha” “Sf” “Hg” “Sk” “Ml” “Mt” “Mk” “Lk” “Jh” “Ap” “Rm” “1Kr” “2Kr” “Gl” “Ef” “Fl” “Kl” “1Ts” “2Ts” “1Tm” “2Tm” “Td” “Fm” “Hb” “Jk” “1Pt” “2Pt” “1Jh” “2Jh” “3Jh” “Jd” “Ilm” “Ju” “Trk” “Tb” “Srk” “Brk” “1Mak” “2Mak” “Erl” “Trl” ); RMPTKD=( 50 40 27 36 34 24 21 3 31 24 22 25 29 36 10 13 10 42 150 31 12 8 66 52 5 48 12 14 4 9 1 4 7 3 3 3 2 14 3 28 16 24 21 28 16 16 13 6 6 4 4 5 3 6 4 3 1 13 5 5 3 5 1 1 1 22 16 19 14 51 6 16 15 6 6 ); rmcount=${#RMNIMED[@]}; rmicount=${#RMPTKD[@]}; for ((indeks=0;indeks<$rmcount;indeks++)) do for i in $(jot -w “%d” ${RMPTKD[indeks]}); do wget -q “http://www.piibel.net/?rmt=${RMNIMED[indeks]}&ptk=`printf “%d” $i`” -O “./${RMNIMED[indeks]}_`printf “%d” $i`.htm”; done; done;
Soovituslik: Eesti t2hed failinimest 2ra
for i in {1..31}; do mv “Õp_`printf “%d” $i`.htm” Op_`printf “%d” $i`.htm; done; for i in {1..8}; do mv “Ül_`printf “%d” $i`.htm” Ul_`printf “%d” $i`.htm; done;
See l6ikab originaal failist sisu
mkdir -m 755 “../Piibel”; for SEEPTK in $(grep -il “.” *.htm); do SEETIITEL=$(echo $SEEPTK | awk -F”.” ‘{print $1}’); cat ../___piibel_tpl | sed “s/PEATUKINIMEKOHT/${SEETIITEL}/g” > “../Piibel/${SEEPTK}”;sed -n ‘/<div id=”loe”>/,/<div class=”toolbar”>/p’ $SEEPTK >> “../Piibel/${SEEPTK}”; echo ‘</div></body></html>’ >> “../Piibel/${SEEPTK}”; done;
liidab txt failid ja lisab vahekohtadesse reavahe
for SEEPTK in $(grep -il “./txt/” *.txt); do “\r\n” >> cat ${SEEPTK} > “./piibelnet.txt”; done;
#<body> puhastamine
mkdir -m 755 ../Piibel; for SEEPTK in $(grep -il “.” *.htm); do sed ‘s/<body>/<body onload=”initPage()”>/g’ $SEEPTK > “../Piibel/${SEEPTK}”; done;
sisukorra tegemine:
cd ‘~/Sites/sites/Piibel.net/’;mkdir -m 755 ‘../Piibel.net.indeks’;for SEEPTK in $(grep -il “.” *.htm); do textutil -inputencoding utf-8 -convert txt -output “../Piibel.net.indeks/${SEEPTK}.txt” $SEEPTK;done;
cd ‘../Piibel.net.indeks’;
tr -s ‘ ‘;
perl -p -e ‘s/\n/\r\n/’ < $SEEPTK > “../Piibel_W/${SEEPTK}”;
PHP
$pealkiri = getfrange($divLoe, ‘<div>’, ‘</div>’, $p_o);
$p = getfrange($divLoe, ‘<p>’, ‘</p>’, $p_o);
Huvitavat lugemist: