我听说过HTML Parser库,比如Simple HTML DOM和HTML Parser。我也听说过包含HTML解析的问题。解析HTML是什么意思?
答案 0 :(得分:18)
与Spudley所说的不同,解析基本上是解决(句子)到其组成部分并描述他们的句法角色。
根据维基百科的说法,解析或句法分析是按照自然语言或计算机语言分析一系列符号的过程,根据规则形式语法。术语解析来自拉丁语(orationis),意思是语言的一部分。
在您的情况下,HTML解析基本上是:接收HTML代码并提取相关信息,如页面标题,页面中的段落,页面中的标题,链接,粗体文本等。
解析内容的计算机程序称为解析器。通常有两种解析器:
自上而下的解析 - 自上而下的解析可以被视为尝试通过使用给定的自上而下的扩展来搜索解析树来查找输入流的最左侧派生形式语法规则。令牌从左到右消耗。包容性选择用于通过扩展语法规则的所有替代右侧来适应歧义。
自下而上解析 - 解析器可以从输入开始并尝试将其重写为起始符号。直观地,解析器尝试定位最基本的元素,然后是包含这些元素的元素,依此类推。 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
答案 1 :(得分:6)
解析通常适用于任何计算机语言,并且是将代码作为文本并在内存中生成计算机可以理解和使用的结构的过程。
特别是对于HTML,HTML解析是获取原始HTML代码,读取它并从中生成DOM树对象结构的过程。