HTML解析是什么意思?

Lig*_*ltϟ 12 html parsing html-parsing

我听说过HTML Parser库,如Simple HTML DOM和HTML Parser.我也听说过包含HTML解析的问题.解析HTML是什么意思?

Ans*_*shi 22

与Spudley所说的不同,解析基本上是将(句子)解析为其组成部分并描述其语法角色.

根据维基百科,解析或句法分析是根据形式语法的规则分析一系列符号的过程,无论是自然语言还是计算机语言.术语解析来自拉丁语(orationis),意思是语言的一部分.

在您的情况下,HTML解析基本上是:接收HTML代码并提取相关信息,如页面标题,页面中的段落,页面中的标题,链接,粗体文本等.

分析器:

解析内容的计算机程序称为解析器.一般有2种解析器:

自上而下的解析 - 自上而下的解析可以被视为尝试通过使用给定的正式语法规则的自上而下的扩展来搜索解析树来查找输入流的最左边的派生.令牌从左到右消耗.包容性选择用于通过扩展语法规则的所有替代右侧来适应歧义.

自下而上解析 - 解析器可以从输入开始并尝试将其重写为起始符号.直观地,解析器尝试定位最基本的元素,然后是包含这些元素的元素,依此类推.LR解析器是自下而上解析器的示例.用于此类解析器的另一个术语是Shift-Reduce解析.

一些示例解析器:

自上而下的解析器:

自下而上的解析器:

示例解析器:

这是python中的HTML解析器示例:

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>')
Run Code Online (Sandbox Code Playgroud)

这是输出:

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
Run Code Online (Sandbox Code Playgroud)

参考


Spu*_*ley 6

解析通常适用于任何计算机语言,并且是将代码作为文本并在内存中生成计算机可以理解和使用的结构的过程.

特别是对于HTML,HTML解析是获取原始HTML代码,读取它并从中生成DOM树对象结构的过程.