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

Nick Demou ndemou at gmail.com
Tue Oct 3 16:29:34 EEST 2006


Την 3/10/2006, Giorgos Keramidas <keramida at ceid.upatras.gr> έγραψε:
> On 2006-10-03 12:21, Nick Demou <ndemou at gmail.com> wrote:
> > [...]
> >
> > Ψάχνω λοιπόν ένα utility το οποίο να κάνει σε ελληνικές σελίδες ότι
> > κάνει και το sed -e 's#<[^>]*>##g' στις αγγλικές (δηλαδή να διαβάζει
> > html και να αφερεί τα πάντα εκτός από το κυρίως κείμενο το οποίο να το
> > περνά στην έξοδο σε utf-8)
> >
> > ΣΗΜΕΙΩΣΗ: Δοκίμασα το w3m το οποίο καταλαβαίνει όλα τα html encodings
> > αλλά το ρημάδι κάνει ΚΑΙ "έξυπνο" text rendering με τέτοιο τρόπο ώστε
> > το text να έχει το layout της σελίδας. Αυτό ακούγεται ωραίο εν πρώτης
> > αλλά στην περίπτωση μου καταστρέφει τα πάντα γιατί ανακατέβει γραμμές
> > του κυρίως περιεχομένου μιας σελίδας με τα πλαινά banners με
> > αποτέλεσμα το diff να βγάζει την μισή σελίδα ως αλαγμένη όταν
> > προσθέσεις μια γραμμή στην μέση του κυρίως κείμενου.
>
> Εγώ προτιμώ συνήθως να κάνω HTML-diff αλλά με μια μικρή πονηριά.

δεν το ήξερα το HTML diff - θα το δοκιμάσω
(αλήθεια το κάνεις για τον ίδιο λόγο με εμένα - δηλαδή π.χ. για να
εντοπίζεις ότι σε ένα site έχει προστεθεί μια νέα είδηση ή αναφορά σε
ένα νέο προϊόν κτλ?)

>
> Πριν κάνω 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 όμως :(
>

χμμμ... το περιέγραψα χάλια - ορίστε μια καλύτερη επεξήγηση του τι θέλω:

<table>
  <th>
    <td>
       this is a sample</br>
       text spanning</br>
       three lines</br>
    </td>
   </th>
  <th>
    <td>
       yet another</br>
       text spanning another </br>
       three lines </br>
    </td>
   </th>
</table>

αν απλά καθαρίσεις τα tags έχεις αυτό που θέλω - δηλαδή:
===EXAMPLE 1 RAW STYLE===
       this is a sample
       text spanning
       three lines
       yet another
       text spanning another
       three lines

ενώ το w3m παράγει αυτό:
===EXAMPLE 1 W3M STYLE===
       this is a sample    yet another
       text spanning       text spanning another
       three lines            three lines


ο λόγος που προτιμώ το πρώτο είναι πως πολές σελίδες έχουν δύο στήλες
(π.χ. η αριστερή με το μενού και η δεξιά με τις ειδήσεις). Έτσι αν
προσθέσουν μία νέα γραμμή στην δεξιά στήλη όλες οι γραμμές του
resulting text θα είναι διαφορετικές. Συγκρίνεται το παρακάτω με το
EXAMPLE 1 W3M STYLE:
===EXAMPLE 2 W3M STYLE===
       this is a sample    just one new line
       text spanning       yet another
       three lines            text spanning another
                                  three lines

οπότε το diff θα τα μου παρουσιάσει όλη τη σελίδα ως αλλαγμένη

αλήθεια το HTML-diff ποια λογική ακολουθεί?

BTW σκέφτηκα μια απλή και μάλον καλή λύση ενώ οδηγούσα (να γιατί θα
σκοτωθώ με την μηχανή): θα κάνω στο original html ένα replace όλων των
th και td tags με <p> tags και μετά θα το περάσω από το w3m και το
diff.




More information about the Linux-greek-users mailing list