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?
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.
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.
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
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.