2016-03-02 159 views
1

我正在嘗試編寫一個解析器,將採取HTML和轉換/輸出到Wiki語法(<b> = ''',<i> == ''等)。BeautifulSoup replace_with非標準標籤

到目前爲止,BeautifulSoup似乎只能替換標籤內的內容,因此<b>變爲<'''>而不是'''。我可以使用re.sub()將它們交換出來,但是由於BS將文檔轉換爲「Python對象的複雜樹」,我無法弄清楚如何替換這些標籤並將它們重新插入到整體中文件。

有沒有人有想法?

回答

1

我很確定已經有工具可以爲你做這件事,但如果你問的是如何使用BeautifulSoup來做到這一點,你可以使用replace_with(),但你需要保留元素的文本。天真和簡單的例子:

from bs4 import BeautifulSoup 

data = """ 
<div> 
    <b>test1</b> 
    <i>test2</i> 
</div> 
""" 

soup = BeautifulSoup(data, "html.parser") 

for b in soup.find_all("b"): 
    b.replace_with("'''%s'''" % b.text) 

for i in soup.find_all("i"): 
    i.replace_with("''%s''" % i.text) 

print(soup.prettify()) 

打印:

<div> 
'''test1''' 
''test2'' 
</div> 
+0

神奇。這就是我需要的,謝謝。有些工具可以在不同程度上執行此功能,但我可以找到的每個工具都保留了過多的HTML。我希望在可能的情況下純轉換爲Wiki標記。 –