繁体   English   中英

使用Python提取HTML标签内容

[英]Extracting HTML tag contents using Python

我有一个运行到188页的Word文档,该文档主要使用字体大小来表示结构。

您可以在这里看到它: https : //github.com/watty62/jazz_birthdays/blob/master/jazz_birthdays.doc

我想使用Python(我的首选语言)提取内容并将其保存为json等数据格式。

我在Libre Office中打开了该文档,并将其另存为HTML,还尝试将其导出为替代XML文件。

您可以在此处看到XMl和HTML文件两者似乎都可以生成结构合理的文档,但要从XML中提取含义则更加困难

<para>1 January   </para>
<para>Helmut Brandt, baritone sax, 1931 (July 26, 2001)</para> 

在HTML版本中,我们最终得到

    <P LANG="en-US" STYLE="margin-top: 0.18cm; margin-bottom: 0.18cm; page-break-after: avoid">
<FONT SIZE=4>1 January   </FONT>
</P>
<P LANG="en-US" CLASS="western" STYLE="font-weight: normal">Helmut
Brandt, baritone sax, 1931 (July 26, 2001)</P>

每个日期都用<FONT SIZE=4> </FONT>标记括起来(尽管偶尔将它们用于其他目的)。

快速计数给出了<FONT SIZE=4> 377种用法-因此现在假设一年中所有366天都存在,那么我将不得不忽略它的11种用法。

我的方法是将第一个<Font size=4>替换为表示日期字段开头的内容,例如<Date>然后每个后续的字段都以日期结尾(在所有音乐家之后生日),然后打开下一个日期</Date><Date>

之后,我认为我会简化每一行-尽管这些会因名称(可能包含昵称),乐器演奏而变得复杂,并用逗号,出生年份和死亡日期(括号内并以“ d”开头)分开。 -还有更多让以后陷入困境的机会。

最初尝试使用Beautiful soup分析文件是在原始文件中引发了一些编码错误。

我不是在寻找解决方案(因为这确实是个大问题),但是请您提供有关方法,库等方面的提示,以帮助我入门。

谢谢

伊恩

我希望这是您要寻找的(如果不是,请告诉我,以便我为您删除答案):

import re
s="""<P LANG="en-US" STYLE="margin-top: 0.18cm; margin-bottom: 0.18cm; page-break-after: avoid">
<FONT SIZE=4>1 January   </FONT>
</P>
<P LANG="en-US" CLASS="western" STYLE="font-weight: normal">Helmut
Brandt, baritone sax, 1931 (July 26, 2001)</P>"""
print re.findall(r"\d{1,2} \w+",s)

输出:

['1 January']

作为快速说明,re模块是一种奇特的搜索机制。 这是final()方法,它需要搜索一个模式和一个要搜索的字符串。我向它提供了模式r“ \\ d {1,2} \\ w +”。 字符串前的r告诉python忽略反斜杠,以便re可以将反斜杠用于其目的。 \\ d表示一个数字。 {1,2}表示一两次。 空间仅表示空间。 \\ w表示单词字符。 和+表示一个或多个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM