web-dev-qa-db-fra.com

Que signifie l'analyse HTML?

J'ai entendu parler des bibliothèques HTML Parser comme Simple HTML DOM et HTML Parser. J'ai également entendu parler de questions contenant l'analyse HTML. Que signifie analyser HTML?

13
LightningBoltϟ

Contrairement à ce que disait Spudley, l'analyse consiste essentiellement à résoudre (une phrase) en ses composants et décrire leurs rôles syntaxiques.

Selon wikipedia, l'analyse syntaxique ou syntaxique est le processus d'analyse d'une chaîne de symboles, soit en langage naturel ou en langages informatiques , selon les règles d'une grammaire formelle. Le terme analyse vient du latin pars (orationis), qui signifie partie (du discours).

Dans votre cas, l'analyse HTML est essentiellement: prendre du code HTML et extraire des informations pertinentes comme le titre de la page, les paragraphes de la page, les titres de la page, les liens, le texte en gras, etc.

Analyseurs:

Un programme informatique qui analyse le contenu est appelé analyseur. Il existe en général 2 types d'analyseurs:

Analyse descendante - L'analyse descendante peut être vue comme une tentative de trouver les dérivations les plus à gauche d'un flux d'entrée en recherchant des arbres d'analyse à l'aide de une expansion descendante des règles de grammaire formelles données. Les jetons sont consommés de gauche à droite. Le choix inclusif est utilisé pour tenir compte de l'ambiguïté en élargissant tous les autres côtés droit des règles de grammaire.

Analyse ascendante - Un analyseur peut commencer par l'entrée et tenter de la réécrire sur le symbole de début. Intuitivement, l'analyseur tente de localiser les éléments les plus élémentaires, puis les éléments les contenant, et ainsi de suite. Les analyseurs LR sont des exemples d'analyseurs ascendants. Un autre terme utilisé pour ce type d'analyseur est l'analyse Shift-Reduce.

Quelques exemples d'analyseurs:

Analyseurs descendants:

Analyseurs ascendants:

Exemple d'analyseur:

Voici un exemple d'analyseur HTML en python:

from HTMLParser import HTMLParser

# create a subclass and override the handler methods
class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print "Encountered a start tag:", tag
    def handle_endtag(self, tag):
        print "Encountered an end tag :", tag
    def handle_data(self, data):
        print "Encountered some data  :", data

# instantiate the parser and fed it some HTML
parser = MyHTMLParser()
parser.feed('<html><head><title>Test</title></head>'
            '<body><h1>Parse me!</h1></body></html>')

Voici la sortie:

Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h1
Encountered some data  : Parse me!
Encountered an end tag : h1
Encountered an end tag : body
Encountered an end tag : html

Références

24
Anshu Dwibhashi

L'analyse en général s'applique à n'importe quel langage informatique et consiste à prendre le code sous forme de texte et à produire une structure en mémoire que l'ordinateur peut comprendre et utiliser.

Spécifiquement pour HTML, l'analyse HTML est le processus consistant à prendre du code HTML brut, à le lire et à générer une structure d'objet d'arbre DOM à partir de celui-ci.

7
Spudley