Tīmekļa satura lasītājs ar izmaiņu kontroli
Izveido skriptu:
gedit tenders.shievieto tajā sekojošu saturu:
#!/bin/bash
list=`cat /home/bin/tenders.list` # Apmeklējamo lapu saraksts
cd /home/www/misc/ # Failu mape
prevfile="Tenders_old.html" # Vecais fails, pēc kura skatās izmaiņas
thisfile="Tenders.html" # Tekošais pilnais fails
newfile="Tenders_new.html" # Pēdējo izmaiņu fails
# Izveido veco failu, ja tāda nav, lai ir ar ko salīdzināt
if [[ ! -f $prevfile ]]; then
if [[ -f $thisfile ]]; then
mv $thisfile $prevfile
else
touch $prevfile
fi
touch $thisfile
fi
# Nosaka vecā faila modificēšanas laiku
week=`date +'%Y%W'`
filedate=`date -r $prevfile +'%F %R'`
fileweek=`date -r $prevfile +'%Y%W'`
let "weekdiff=$week-$fileweek"
# Ja tekošais fails vecāks par 1 nedēļu, pārsauc to par veco failu
if [[ $weekdiff -gt 1 ]]; then
mv $thisfile $prevfile
fi
#################################
## Izveido tekošā faila saturu ##
#################################
echo "<html><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/> \
<link rel='stylesheet' type='text/css' href='tenders.css' /> </head>" > $thisfile
for i in $list; do
base="http:\/\/`echo $i|awk -F '/' '{print $3}'`\/"
# aizver tegus, ja salauzta HTMLa dēļ kāds nav aizvērts
echo '</span>)))</td></tr></table>' >> $thisfile
echo "<h2><a class='Heading' href='$i'>$i</a></h2> <!--`date +'%F %T'` -->" >> $thisfile
# echo $i
wget -t1 --connect-timeout=30 $i -O Tenders.tmp >/dev/null 2>&1
charset=`grep -i windows-1257 Tenders.tmp`
if [[ "$charset" != "" ]]; then
iconv -f windows-1257 -t utf8 Tenders.tmp > Tenders.new.tmp 2>/dev/null
mv Tenders.new.tmp Tenders.tmp
fi
# ---- Satura tīrīšana ----
# ideālu rezultātu ar straumētu satura apstrādi iegut nav ismējams, jo praktiski visām lapām HTMLs ir nepareizs
# līdz ar to, mēģinām panākt daudzmaz baudāmu satura vienkāršošanu ar pieteikami vienkāršiem līdzekļiem
# novāc HTML hederus
sed -ie '/<head/,/<\/head>/d' Tenders.tmp
sed -ie '/<HEAD/,/<\/HEAD>/d' Tenders.tmp
# izmet skriptus
sed -ie '/<script /,/<\/script>/d' Tenders.tmp
sed -ie '/<SCRIPT /,/<\/SCRIPT>/d' Tenders.tmp
# izmet komentārus, jo tie traucē pareizi izmest liekos HTML tagus
sed -ie '/<!--/,/-->/d' Tenders.tmp
# Izmaina vajadzigos HTML tagus, lai tos neietekmē globālā izmešana
# 1. hipersaites
sed -ie 's/<\([[/]]\?\(a\)[[^>]]*\)>/={={={\1}=}=}=/g' Tenders.tmp
# 2. noslēdzošos tagus, kurus aizstās ar <br/>
sed -ie 's/<\/\(tr\|th\|p\|div\|table\|span\|h1\|h2\h3\)[[^>]]*>/===={0}====/gI' Tenders.tmp
sed -ie 's/<br\/[[ ]]*>/===={0}====/gI' Tenders.tmp
# izmet visus tagus, izņemot hipersates
sed -e :a -e 's/<[[^>]]*>//g;/</N;//ba' Tenders.tmp > Tenders1.tmp
mv Tenders1.tmp Tenders.tmp
# atjauno hipersaišu atverošās un aizverošās iekavas
sed -ie 's/={={={/</g' Tenders.tmp
sed -ie 's/}=}=}=/>/g' Tenders.tmp
# izmet no hipersaitēm sesijas numurus
sed -ie 's/\(\(php\|j\)ses\(s\)*\(ion\)**id\)=[[A-Z0-9]]*//gI' Tenders.tmp
# aizstāj relativās saites ar absolūtajām
sed -ie "s/href="[[^http]]/href="$base/g" Tenders.tmp
sed -ie "s/href='[[^http]]/href=\'$base/g" Tenders.tmp
# Aizvieto mainītos noslēdzošos tegus ar <br/>, izmet atkārtojošos
sed -n '1h;1!H;${;g;s/===={[[0= \t\f\v\n]]*}====/<br\/>/g;p;}' Tenders.tmp > Tenders1.tmp
mv Tenders1.tmp Tenders.tmp
cat Tenders.tmp >> $thisfile
done
# salīdzina iepriekšējā faila versiju ar tekošo un parāda izmaiņas
echo "<html><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/> \
<link rel='stylesheet' type='text/css' href='tenders.css' /> </head>" > $newfile
echo "<h1>Pasūtījumu izmaiņas no $filedate uz " `date +'%F %R'` " </h1>" >> $newfile
diff --old-line-format='' --new-line-format='%L' --unchanged-group-format='' $prevfile $thisfile >> $newfilenomaina /home/bin/tenders.list un cd /home/www/misc/ atbilstoši savai videi
Pievieno skriptam izpildes tiesības:
chmod +x tenders.shIzveido tīmekļa lapu sarakstu:
gedit tenders.listfailā ievieto, piemēram, sekojošu saturu un to saglabā:
http://izm.izm.gov.lv/aktualitates/iepirkumi/B-dala.html- Izpilda skriptu tenders.sh un pārliecinās, ka ir izveidoti faili Tenders....html.
Ja vēlas, ievieto skripta izsaukumu datora plānotājā:
crontab -eatvērtajā failā pievieno, piemēram, sekojošu rindu:
0 8-18/2 * * 1-5 /home/bin/tenders.shkas atjaunos saturu katru 2. stundu no 8:00 līdz 18:00 darba dienās.
Zināmās kļūdas un vēlamie uzlabojumi
- Relatīvo hipersaiti vajadzētu noteikt un aizstāt norādot, ka nesākas ar http/https
- Izmaiņās būtu jārāda tikai tie virsraksti (saites), kurās lapās ir kādas izmaiņas
- sed izteiksmēs vajadzētu iemācīties norādīt nešķirot lielos un mazos burtus elegantā veidā (ne ar [A-Za-z];-))
Tags
Tīmeklis
Rīki
Created by Valdis Vītoliņš on 2009-09-10 08:42
Last modified by Valdis Vītoliņš on 2021-04-13 14:30
Created by Valdis Vītoliņš on 2009-09-10 08:42
Last modified by Valdis Vītoliņš on 2021-04-13 14:30