簡體   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