Φιλτράρετε τα ετικέτες HTML και την επίλυση των οντοτήτων σε python

ψήφοι
16

Επειδή κανονικές εκφράσεις με τρομάζουν, Προσπαθώ να βρω έναν τρόπο για να αφαιρέσετε όλες τις ετικέτες HTML και να επιλύσουν HTML οντότητες από μια σειρά στην Python.

Δημοσιεύθηκε 01/09/2008 στις 04:25
πηγή χρήστη
Σε άλλες γλώσσες...                            


8 απαντήσεις

ψήφοι
4

Τι λέτε για την ανάλυση των δεδομένων HTML και εξαγωγή των δεδομένων με τη βοήθεια του αναλυτή;

Θα προσπαθήσουμε κάτι σαν συγγραφέα περιγράφεται στο κεφάλαιο 8.3 στο βιβλίο Dive Into Python

Απαντήθηκε 01/09/2008 στις 04:35
πηγή χρήστη

ψήφοι
6

Αν και συμφωνώ με τον Lucas ότι η τακτική εκφράσεις δεν είναι όλα αυτά τρομακτικό, εξακολουθώ να πιστεύω ότι θα πρέπει να πάτε με ένα εξειδικευμένο πρόγραμμα ανάλυσης HTML. Αυτό οφείλεται στο γεγονός ότι το πρότυπο HTML είναι αρκετά τριχωτό (ειδικά αν θέλετε να αναλύσει αυθαίρετα «HTML» σελίδες που λαμβάνονται από το Διαδίκτυο) που θα πρέπει να γράψετε πολλά κώδικα για να χειριστεί τις υποθέσεις γωνία. Φαίνεται ότι πύθωνας περιλαμβάνει μια έξω από το κουτί .

Θα πρέπει επίσης να ελέγξετε τις συνδέσεις python για TidyLib που μπορεί να καθαρίσει σπασμένα HTML, καθιστώντας το ποσοστό επιτυχίας της κάθε HTML parsing πολύ υψηλότερο.

Απαντήθηκε 01/09/2008 στις 04:49
πηγή χρήστη

ψήφοι
1

Ίσως χρειαστεί κάτι πιο περίπλοκο από ό, τι μια κανονική έκφραση. Οι ιστοσελίδες έχουν συχνά αγκύλες που δεν είναι μέρος μιας ετικέτας, όπως αυτό:

 <div>5 < 7</div>

Απογύμνωση τις ετικέτες με την τυπική έκφραση θα επιστρέψει το string «5» και τη θεραπεία

 < 7</div>

ως ενιαία ετικέτα και ταινίες έξω.

Προτείνω αναζητούν ήδη γράψει κώδικα που το κάνει αυτό για σας. Έκανα μια αναζήτηση και βρήκα αυτό: http://zesty.ca/python/scrape.html Επίσης, μπορεί να επιλύσει HTML οντότητες.

Απαντήθηκε 01/09/2008 στις 04:50
πηγή χρήστη

ψήφοι
15

Χρησιμοποιήστε BeautifulSoup ! Είναι ιδανικό για αυτό, όταν έχετε εισερχόμενη σήμανσης αμφίβολης αρετή και πρέπει να πάρετε κάτι λογικό από αυτό. Μόλις περάσει στο αρχικό κείμενο, εξαγάγετε όλες τις ετικέτες των χορδών, και η σύνδεσή τους.

Απαντήθηκε 01/09/2008 στις 04:53
πηγή χρήστη

ψήφοι
40

Χρησιμοποιήστε lxml η οποία είναι η καλύτερη βιβλιοθήκη xml / html για python.

import lxml.html
t = lxml.html.fromstring("...")
t.text_content()

Και αν απλά θέλετε να απολυμάνετε το βλέμμα html στο lxml.html.clean μονάδα

Απαντήθηκε 01/09/2008 στις 05:07
πηγή χρήστη

ψήφοι
0

Κανονικές εκφράσεις δεν είναι τρομακτικό, αλλά γράφοντας τη δική σας regexes να αφαιρέσει HTML είναι ένας σίγουρος δρόμος για την τρέλα (και δεν θα λειτουργήσει, είτε). Ακολουθήστε το μονοπάτι της σοφίας, και χρησιμοποιήστε μία από τις πολλές καλές βιβλιοθήκες HTML-ανάλυσης.

παράδειγμα Lucas' σπάσει επίσης επειδή “sub” δεν είναι μια μέθοδος μιας συμβολοσειράς Python. Θα έπρεπε να «εισαγωγή νέου», τότε καλέστε re.sub (μοτίβο, repl, string). Αλλά αυτό είναι ούτε εδώ ούτε εκεί, καθώς η σωστή απάντηση στην ερώτησή σας δεν περιλαμβάνει το γράψιμο κάθε regexes.

Απαντήθηκε 01/09/2008 στις 07:15
πηγή χρήστη

ψήφοι
0

Κοιτάζοντας το ποσό της αίσθησης άνθρωποι διαδηλώνουν σε άλλες απαντήσεις εδώ, θα έλεγα ότι η χρήση ενός regex πιθανόν να μην είναι η καλύτερη ιδέα για την περίπτωσή σας. Πηγαίνετε για κάτι δοκιμασμένες, και τη θεραπεία προηγούμενη απάντησή μου ως απόδειξη ότι regexes δεν πρέπει να είναι ότι τρομακτικό.

Απαντήθηκε 01/09/2008 στις 23:11
πηγή χρήστη

ψήφοι
2

αν χρησιμοποιείτε Django μπορείτε επίσης να χρησιμοποιήσετε http://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags ?)

Απαντήθηκε 28/02/2011 στις 14:51
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more