HTML 解析是啥意思? [关闭]

Posted

技术标签:

【中文标题】HTML 解析是啥意思? [关闭]【英文标题】:What does HTML Parsing mean? [closed]HTML 解析是什么意思? [关闭] 【发布时间】:2013-12-23 15:38:39 【问题描述】:

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

【问题讨论】:

我认为大多数编程词汇表都会有“解析”的定义。 我猜当人们谈论 HTML 解析时,他们真正的意思是 HTML 反序列化 - 获取字符流并将其转换为对象模型的过程,如 Spudley 所述.正如 Anshuman Dwibhashi 指出的那样,解析实际上意味着更具体的东西,但根据我的经验,这并不是“HTML 解析”一词的上下文中通常的含义。 顺便说一句,您添加到问题中的parsinghtml-parsing 标签都有标签wiki 信息,可以为您提供您正在寻找的答案。只需将鼠标悬停在标签上和/或点击标签即可了解更多信息。 【参考方案1】:

与 Spudley 所说的不同,解析基本上是将(一个句子)分解成它的组成部分并描述它们的句法作用。

根据***,解析或句法分析是根据语法规则分析一串符号的过程,可以是自然语言计算机语言。形式语法。解析一词来自拉丁语 pars (orationis),意思是(语音的)部分。

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

解析器:

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

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

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

几个示例解析器:

自上而下的解析器:

Recursive descent parser LL parser (Left-to-right, Leftmost derivation) Earley parser

自下而上的解析器:

优先级解析器 Operator-precedence parser Simple precedence parser BC(有界上下文)解析 LR parser(L从左到右,R最右推导) 简单的 LR (SLR) 解析器 LALR parser Canonical LR (LR(1)) parser GLR parser CYK parser Recursive ascent parser

示例解析器:

这是一个 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>')

这是输出:

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

参考文献

Wikipedia Python docs

【讨论】:

"在您的情况下,HTML 解析基本上是接收 HTML 代码并提取相关信息,例如页面标题、页面中的段落、页面中的标题、链接、粗体文本等等。”我认为那句话中有一个或两个或二十个太多的逗号......你可能想至少链接到***的文章。 好的,1分钟,我去修改 docs.python.org/3/library/html.parser.html【参考方案2】:

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

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

【讨论】:

请问您参考的是哪一个?

以上是关于HTML 解析是啥意思? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中解析 html 的最佳方法是啥? [关闭]

逆地址解析失败是啥意思

(解析主机)是啥意思?

域名解析是啥意思

“无法正确解析视频编解码器”是啥意思。意思是?

“找不到符号”或“无法解析符号”错误是啥意思?