簡體   English   中英

使用Python解析和編輯HTML文件

[英]Parsing and editing HTML files using Python

問題如下:從對象數據庫轉儲了一些基本的HTML自動生成的文件。 它是基於表的信息。 文件的結構每一代都是相同的,通常是連貫的內容。 我必須進一步處理該文件,做一些注釋,等等,因此,我想編輯一下此HTML文件,例如添加具有可寫文本字段的額外表格單元格以在文件中添加注釋,也許還有一些最終按鈕以生成一些其他輸出。 現在的問題:

我選擇編寫Python腳本來處理文件中的更改。 這是一個正確的選擇,還是您可以提出更好的建議?

現在,我將按以下方式處理:

1)制作基本文件的工作副本

2)在Python中以I / O字符串形式打開工作副本:

content = content_file.read()

3)通過html.parser對象運行此命令:

ModifyHtmlParser.feed(content)

4)使用HTML解析器的重載基類方法,我正在尋找標簽的有趣部分:

def handle_starttag(self, tag, attrs):
    #print("Encountered a start tag:", tag)
    if tag == "tr":
        print("Table row start!")
        offset = self.getpos()
        tagText = self.get_starttag_text()

結果,我得到了輸入,標記標簽的不可變子集,而現在,我感覺自己正走向死胡同...關於如何重新構想的任何想法? 這個特定的庫中的任何一個可能有用嗎?

我建議您使用以下一般方法。

  1. 使用此類任務的任何現有庫,將HTML加載並解析為方便的內存樹表示形式。
  2. 在樹中找到相關的節點。 (第1部分中的大多數庫將提供某種形式的XPath和/或CSS選擇器。兩者都允許您查找滿足特定規則的所有節點。在您的情況下,規則可能是“ tr which ...”。)
  3. 單獨處理找到的節點(第1部分中的大多數庫將使您可以就地編輯樹)。
  4. 寫出修改后的樹或新生成的樹。

這是一個有關如何實現上述內容的特定示例。 (庫的確切選擇有些靈活。這里有多個選項。)

  1. HTML解析和表示庫有多個選項。 最近聽到的最常見的建議是LXML
  2. LXML同時提供CSS選擇器支持XPath支持
  3. 請參閱LXML etree文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM