html - HTML 解析是什么意思?

标签 html parsing html-parsing

<分区>

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

最佳答案

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

根据维基百科,语法分析或句法分析是根据语法规则分析自然语言计算机语言中的符号字符串的过程正式语法。术语解析来自拉丁语 pars (orationis),意思是词性。

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

解析器:

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

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

自下而上的解析 - 解析器可以从输入开始并尝试将其重写为起始符号。直觉上,解析器试图定位最基本的元素,然后是包含这些元素的元素,依此类推。 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>')

这是输出:

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

引用资料

关于html - HTML 解析是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421316/

相关文章:

html - 垂直对齐从不响应

html - 如何使用CSS改变图标颜色

forms - Go HTTP 表单解析 - 返回空 slice/空值?

python xml转字符串,插入postgres

javascript - bootstrap Popover 关闭按钮不起作用

html - 无法使用 CSS 设置 iframe 的样式

php - 需要解析ini文件来提取值

python - 在 Python 中进行类似 jquery 的 HTML 解析?

python - Beautiful Soup - 从 div 类内的外部引号中提取值

html-parsing - jsoup的java或jdk版本要求