Portál AbcLinuxu, 12. listopadu 2025 22:28
Muzes ukazat co mas hotove na cem se da stavet, nebo kde je problem?
INFILE="http://adresa/dokument.html"
wget -O - $INFILE | (
# nejake promenne jenz mozna budeme potrebovat
PROMENNA=
...
while read LINE; do
# budeme hledat pozadovana data a na zaklade jejich vyskytu neco podnikneme
echo $LINE | grep -q 'co hledame'
if [ $? -eq 0 ]; then
# nalezeno - neco udelame
...
else
# nenalezeno - delej neco jineho
...
fi
...
# popripade si i neco updavime a zapamatujeme
PROMENNA=`echo $LINE | sed -e 's/vzor/substituce/'`
...
# a mozna i neco vypiseme
printf "vystup"
done
)
#!/usr/bin/bash
#
INFILE="http://www.abclinuxu.cz/data/prilohy/9/9/175399-pocasi-1837466145685031135.html"
wget -O - $INFILE | (
INDAY=0
while read LINE; do
if [ $INDAY -eq 1 ]; then
if [ $PART -eq 0 ]; then
echo $LINE | grep -q 'div class="cLeft"'
if [ $? -eq 0 ]; then
PART=1
else
DAY=`echo $LINE | sed -e 's/.*<h4>\(.*\)<\/h4>.*/\1/'`
fi
else
if [ $PART -eq 1 ]; then
echo $LINE | grep -q 'div class="cRight"'
if [ $? -eq 0 ]; then
PART=2
else
echo $LINE | grep -q ' title="'
if [ $? -eq 0 ]; then
DOP_TYP=`echo $LINE | sed -e 's/.* title="\(.*\)" .*/\1/'`
else
echo $LINE | grep -q '<p>.*<\/p>'
if [ $? -eq 0 ]; then
DOP_TEMP=`echo $LINE | sed -e 's/.*<p>\(.*\)<\/p>.*/\1/'`
else
echo $LINE | grep -q '>.*<\/a><'
if [ $? -eq 0 ]; then
DOP_LABEL=`echo $LINE | sed -e 's/.*>\(.*\)<\/a><br.*/\1/'`
fi
fi
fi
fi
else
echo $LINE | grep -q '<\/div>'
if [ $? -eq 0 ]; then
printf "[$DAY]\n"
printf "\t$DOP_LABEL - $DOP_TYP - $DOP_TEMP\n"
printf "\t$ODP_LABEL - $ODP_TYP - $ODP_TEMP\n"
INDAY=0
PART=0
DAY=
DOP_LABEL=
DOP_TYP=
DOP_TEMP=
ODP_LABEL=
ODP_TYP=
ODP_TEMP=
else
echo $LINE | grep -q ' title="'
if [ $? -eq 0 ]; then
ODP_TYP=`echo $LINE | sed -e 's/.* title="\(.*\)" .*/\1/'`
else
echo $LINE | grep -q '<p>.*<\/p>'
if [ $? -eq 0 ]; then
ODP_TEMP=`echo $LINE | sed -e 's/.*<p>\(.*\)<\/p>.*/\1/'`
else
echo $LINE | grep -q '>.*<\/a><'
if [ $? -eq 0 ]; then
ODP_LABEL=`echo $LINE | sed -e 's/.*>\(.*\)<\/a><br.*/\1/'`
fi
fi
fi
fi
fi
fi
else
echo $LINE | grep -q 'div class="cDay"'
if [ $? = 0 ]; then
INDAY=1
PART=0
DAY=
DOP_LABEL=
DOP_TYP=
DOP_TEMP=
ODP_LABEL=
ODP_TYP=
ODP_TEMP=
fi
fi
done
)
wget, potom něco na parsování, třeba sed nebo awk.
Znáte některý z těchto nástrojů? Víte jak se v bash předávají data mezi jednotlivými nástroji? Pro jednoduchost vám doporučuji stáhnout stránku wgetem, a následně parsovat stažený soubor. Až nebudete vědět jak dál, podělte se o váš výsledek.
Vy jste to za ten týden ještě nevyřešil?lol
==>
http://www.abclinuxu.cz/poradna/linux/show/336314
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.