因此,我正在做一些数据分析,其中我需要从数百个HTML和SHTML文件中提取页面标题、breadcrumb、h1标记。在
这些标记的格式如下(表示“内部填充”和“面包屑”):
<title>Mapping a Drive: Macintosh OSX < Mapping a Drive < eHelp < Cal Poly Pomona</title>
<p><!-- InstanceBeginEditable name="breadcrumb" --><a href="../index.html">eHelp</a> » <a href="index.shtml">Mapping a Drive</a> » Mac OS X<!-- InstanceEndEditable --></p>
<h1><a name="contentstart" id="contentstart"></a><!-- InstanceBeginEditable name="page_heading" --><a name="top" id="top"></a>Mapping a Drive:<span class="goldletter"> Macintosh </span>OS X <!-- InstanceEndEditable --></h1>
在得到这些标记之后,我想进一步提取标题的第一部分Mapping a Drive: Macintosh OSX
,面包屑的最后一部分Mac OS X
,以及整个h1Mapping a Drive: Macintosh OSX
你知道怎么做到吗?在
由于大多数HTML基本上都是xml(或者可以很容易地进行裁剪以与大多数xml解析器兼容),所以我建议使用xml解析器。无论如何,python解析器只是一个特定于xml解析器的子类。在
退房:Python and XML。在
这里有一个很好的教程:Python XML Parser Tutorial。在
另外,xml.dom.minidom Class对我个人来说非常有用。在
另一个类似的方法解释如下:xml.etree.ElementTree。在
这是xml.dom.minidom reference page中的一个很好的例子:
如果您绝对必须使用regex而不是解析器,请查看re module:
^{pr2}$使用真正的HTML解析器,而不是regex。你会更快乐。}一样受到高度重视。在
lxml.html
和{html5lib是一个非常可靠的html解析器。由于xhtml是somewhat broken,xml解析器将拒绝它。幸运的是,html5lib有{a3},因此您仍然可以使用lxml和xpath的全部功能来提取数据。在
相关问题 更多 >
编程相关推荐