我听说过
HTML Parser库,如Simple HTML DOM和HTML Parser.我也听说过包含HTML解析的问题.解析HTML是什么意思?
解决方法
与Spudley所说的不同,解析基本上是将(句子)解析为其组成部分并描述它们的句法角色.
根据维基百科,解析或句法分析是根据形式语法的规则分析一系列符号的过程,无论是自然语言还是计算机语言.术语解析来自拉丁语(orationis),意思是语言的一部分.
在您的情况下,HTML解析基本上是:接收HTML代码并提取相关信息,如页面标题,页面中的段落,页面中的标题,链接,粗体文本等.
分析器:
解析内容的计算机程序称为解析器.一般有2种解析器:
自上而下的解析 – 自上而下的解析可以被视为尝试通过使用给定的正式语法规则的自上而下的扩展来搜索解析树来找到输入流的最左边的派生.令牌从左到右消耗.包容性选择用于通过扩展语法规则的所有替代右侧来适应歧义.
自下而上解析 – 解析器可以从输入开始并尝试将其重写为起始符号.直观地,解析器尝试定位最基本的元素,然后是包含这些元素的元素,依此类推. LR解析器是自下而上解析器的示例.用于此类解析器的另一个术语是Shift-Reduce解析.
一些示例解析器:
自上而下的解析器:
> Recursive descent parser
> LL parser (Left-to-right,Leftmost derivation)
> Earley parser
自下而上的解析器:
>优先解析器
> Operator-precedence parser
> Simple precedence parser
> BC(有界上下文)解析
> LR parser(从左到右,最右边的推导)
>简单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>')
这是输出:
06001
参考