μετατροπή ελληνικού html σε text (χύμα)

Giorgos Keramidas keramida at ceid.upatras.gr
Tue Oct 3 15:49:23 EEST 2006


On 2006-10-03 12:21, Nick Demou <ndemou at gmail.com> wrote:
> με ένα bash script παρακολουθώ κάποιες ενδιαφέρουσες web σελίδες και
> όποτε υπάρχει αλλαγή με ενημερώνει.
> Αυτό παίζει αλλά θέλω να βλέπω και τι αλλαγή έγινε γιατί συχνά είναι
> σε χαζομάρες (π.χ. διαφημίσεις). Στα αγγλικά το παρακάτω παίζει μια
> χαρα
> 
> wget -q -O tmp.html  $URL
> sed -e 's#<[^>]*>##g' tmp.html | sed -e 's/\t/ /g' | sed -e 's/  */
> /g' | sed '/./!d' | uniq > $FILE.txt
> diff -u $FILE.txt $OLDFILE.txt
> 
> αλλά στα ελληνικά τα διάφορα encodings είναι ένα μικρό πρόβλημα ενώ το
> ακόμα χειρότερο πρόβλημα είναι τα ελληνικά με html entitys
> (&sigma;&tau; κτλ).
> 
> Ψάχνω λοιπόν ένα utility το οποίο να κάνει σε ελληνικές σελίδες ότι
> κάνει και το sed -e 's#<[^>]*>##g' στις αγγλικές (δηλαδή να διαβάζει
> html και να αφερεί τα πάντα εκτός από το κυρίως κείμενο το οποίο να το
> περνά στην έξοδο σε utf-8)
> 
> ΣΗΜΕΙΩΣΗ: Δοκίμασα το w3m το οποίο καταλαβαίνει όλα τα html encodings
> αλλά το ρημάδι κάνει ΚΑΙ "έξυπνο" text rendering με τέτοιο τρόπο ώστε
> το text να έχει το layout της σελίδας. Αυτό ακούγεται ωραίο εν πρώτης
> αλλά στην περίπτωση μου καταστρέφει τα πάντα γιατί ανακατέβει γραμμές
> του κυρίως περιεχομένου μιας σελίδας με τα πλαινά banners με
> αποτέλεσμα το diff να βγάζει την μισή σελίδα ως αλαγμένη όταν
> προσθέσεις μια γραμμή στην μέση του κυρίως κείμενου.

Εγώ προτιμώ συνήθως να κάνω HTML-diff αλλά με μια μικρή πονηριά.

Πριν κάνω diff στο 'a' και το 'b' αρχείο, τα περνάω από το tidy(1) και
τα δύο, με παραμέτρους:

    % tidy -asxml -i -raw -wrap 120 a > a.tidy
    % tidy -asxml -i -raw -wrap 120 b > b.tidy

Ετσι είναι πιο 'προβλέψιμο' τι έχει το HTML κείμενο, και μπορώ να κάνω
diff στο HTML source.

Το πρόβλημα είναι, όμως, από ότι κατάλαβα ότι εσύ θες να κάνεις diff στο
`rendered' κείμενο, χωρίς απαραίτητα να το κάνεις render όμως :(




More information about the Linux-greek-users mailing list