Gå til innhold

Trenger hjelp å lage et bash-skript som parser HTML


Anbefalte innlegg

Hadde håpet noen guruer her kunne ha hjulpet meg med et batch-script (eller en idé til hvordan dette kan løses enkelt....).

 

Her er saken: jeg har et par hundre HTML-filer som inneholder masse info, men jeg skal ha tak i to linjer. Den ene står nokså langt nede i filen (sjelden på samme plass), og ser slik ut:

<td>						MODELL23 MODELL0023</td>

Det er kun nummeret som endrer seg (altså MODELL0024, MODELL0025 osv), og det er kun MODELL0023 jeg trenger.

 

Den andre linja står litt lengre opp, og ser slik ut:

<a href="http://www.nettsidelink.noe/detaljer/ABC.html">Egenskap ABC</a>

Det er kun det som står etter Egenskap som endrer seg, og jeg trenger kun Egenskap ABC.

 

Alle html-filene heter navn001.html, navn002.html osv.

 

Hvis outputen kunne kommet i en txt-fil som ser omtrent sånn ut, ville det vært gull:

MODELL0023
Egenskap ABC
MODELL0024
Egenskap ABD
Osv
Osv

 

Noen som kan hjelpe? Jeg har ikke skrevet slikt noe på flere år, og er helt blank på hvor jeg begynner.....

Endret av cyclo
Emnetittel forbedret
Lenke til kommentar
Videoannonse
Annonse

kanskje du kan basere noe på dette her:

 

#!/bin/bash
OLDIFS=$IFS
IFS=$'\n'

for html in *.html; do
   modell=$(egrep -o "MODELL[0-9]{4}" "$html")
   uri=$(grep "<a href=" "$html" | sed 's/<a href="\(.*\)">\(.*\)<\/a>/\1*\2/g')

   echo "$modell" >> "$1"
   for url in $uri; do
       part1=$(echo "$uri" | egrep -o "^[^*]*")
       part2=$(echo "$uri" | egrep -o "[^*]*$")

       base=`basename $(echo ${part1%.*})`
       if [ "Egenskap $base" = "$part2" ]; then
           echo "$part2" >> "$1"
       fi
   done

done

IFS=$OLDIFS

 

kjøres slik: "./script.sh output.txt"

 

EDIT: liten bug

Endret av hockey500
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...