Skip to content

Парсим сайт при помощи lynx, grep, sed, awk и такой-то матери

И так. Нам нужна некая база.

В следствии того что мы не программисты и скудоумие не позволяет написать парсер на пыхе или петоне - извратился следующим образом:

Скачал сайт:

wget -v -c -R ico,jpg,png,js,css,gif,php --html-extension --output-file=grabber.log -r -l0 -k http://www.адрес-сайта/откуда-грабим-что-то

То что нужно парсить имеет следующий вид и валяется в html файлах (пикча кликабельна):

catalog

Сам скрипт парсера выглядит примерно так:

 

# !/bin/sh
find . -type f | while read i
do

if grep -q "specifications" "$i"
then

a=`links -html-tables 0 -dump "$i" | grep -i "Model:"| awk -F":" '{ print $2 }' | sed 's/^[\s ]*//'`
b=`links -html-tables 0 -dump "$i" | grep -i "Year:"| awk -F":" '{ print $2 }' | sed 's/^[\s ]*//'`
c=`links -html-tables 0 -dump "$i" | grep -i "Category:"| awk -F":" '{ print $2 }' | sed 's/^[\s ]*//'`
d=`links -html-tables 0 -dump "$i" | grep -i "Dry weight:"| awk -F":" '{ print $2 }' | sed 's/^[\s ]*//'`
e=`links -html-tables 0 -dump "$i" | grep -i "Cooling system:"| awk -F":" '{ print $2 }' | sed 's/^[\s ]*//'`
f=`links -html-tables 0 -dump "$i" | grep -i "Top speed:"| awk -F":" '{ print $2 }' | sed 's/^[\s ]*//'`
g=`links -html-tables 0 -dump "$i" | grep -i "Displacement:"| awk -F":" '{ print $2 }' | sed 's/^[\s ]*//'`

echo \"$a\"";"\"$b\"";"\"$c\"";"\"$d\"";"\"$e\"";"\"$f\"";"\"$g\"

else
echo ""
fi

done

И запускаеццо вот так: ./parser.sh > motobase.csv

После чего, понимая что мы реализовали хитрый план, ходим курить, пьем чай и всячески радуемся, пока парсер работает.

Ну а потом делаем с готовой базой то что хотели.

Leave a Reply

Your email address will not be published. Required fields are marked *

π