我需要用python解析html文件,并将内容存储在一个列表中。
示例:['<html>', '<head>', '<meta name="robots" content="noindex">']
下面是关于buggis函数的内容:
def getTexte(fp,compte=0): #returns the text before a html tag
txt=""
pos=fp.tell() #stock the curr position for later use
tmppos=fp.tell() #same here
for car in fp.read():
if car=="<": #if we encounter the start of a html tag
fp.seek(tmppos) #we get back to juste before the html tag
break # and we leave this damn for
txt=txt+car #we concatenate each car in the string
tmppos=fp.tell() #and stock the pos for later use
if compte==0:
fp.seek(pos)
if txt!="":
return txt
下面是我得到的一个示例输出:
^{pr2}$我不明白为什么。可能太累了。在
如果您只需要使用已解析的html的输出,那么看看Beautiful Soup。确保HTML(和XML)被正确解析已经花费了大量的工作,即使您给它输入无效的标记也是如此。在
你需要构建一个解析器吗?或者只需要使用解析器的输出?这将决定从StackOverflow获得的帮助类型。很多时候,通过将您的意图(需求)与您提出的解决方案和问题放在一起,人们会指出可能更适合您需求的替代解决方案。值得深思。在
正如其他人在他们的评论中所说的,你真的不想通过迭代输入作为一系列字符来编写HTML解析器。您的代码片段对
tell()
和read()
方法的引用表明,您是从遍历打开的文件的角度来考虑这一点的,而不是从更高的层次(将文档作为字符串读入缓冲区)来考虑这一点。在有许多工具已经编写,免费提供,广泛测试,良好的维护和广泛赞誉,它们是专门为您执行这类任务而设计的。到目前为止,其中最受欢迎的是一个名为“beauthoulsoup”的程序,它以其健壮性和对“真实世界”中的HTML的容忍度而闻名。beauthulsoup的目标大致上是解析浏览器可以合理显示的任何HTML。因此,它可以处理HTML中各种极为常见的错误——嵌套不当的标记、缺少结束标记的容器、非标准的“标记”以及具有非标准和格式错误的属性和属性=值对的标记等等。在
下面是一个非常简单的使用BeautifulGroup的Python代码示例:
。。。如你所见,对BeautifulSoup的引用只占了这里的几行。剩下的就是获取HTML并打印结果。在
顺便说一句,这些结果并不是您所要寻找的,因为它们表示从最外层向下遍历每个HTML容器及其组件,然后再遍历及其组件,在你的代码中,你可能需要遍历这棵树,确定你什么时候在叶子上,然后以某种方式捕捉文本/内容或标记/代码。您需要阅读BeautifulSoup: Documentation,以获得更精确地满足您的需求的详细信息。在
相关问题 更多 >
编程相关推荐