我正在使用python庫SGMLParser來解析一些html。 我遇到的形式使用Python來解析包含「&」的html數據
<td class="school">Texas A&M</td>
我想讀出「德克薩斯A & M」的HTML標籤。但是,當handle_data被調用時,它會被調用「Texas A」,然後單獨的「M」(爲了清晰起見,引號)。
如何更換
&
串與呼叫之前&,而整個字符串(其中有一些我可能需要)在替換所有特殊的&符號。
謝謝!
我正在使用python庫SGMLParser來解析一些html。 我遇到的形式使用Python來解析包含「&」的html數據
<td class="school">Texas A&M</td>
我想讀出「德克薩斯A & M」的HTML標籤。但是,當handle_data被調用時,它會被調用「Texas A」,然後單獨的「M」(爲了清晰起見,引號)。
如何更換
&
串與呼叫之前&,而整個字符串(其中有一些我可能需要)在替換所有特殊的&符號。
謝謝!
如果從deprecatedSGMLParser
切換到現代的替代,如LXML(也可以用來處理HTML),這將成爲微不足道:
>>> etree.fromstring('''<td class="school">Texas A&M</td>''').text
'Texas A&M'
像&
實體引用由handle_entity
處理。檢查此方法是否知道如何翻譯&
。默認實現應該調用handle_data('&')
,但可能會意外覆蓋它。
另外,如果可能的話,考慮使用更高級的lxml來代替。
SGMLParser有convert_entityref()
方法,但不推薦使用SGMLParser,我建議使用lxml或Beautiful Soup,它們有更好的解析器API。
SGMLParser已被棄用,因爲沒有人關心SGML(大多數人使用它來解析HTML,例子)。 XMLParser具有相同的接口並且不被棄用。 lxml應該真的進入stdlib。 – phihag
是的,我也不關心SGML,它看起來像是一種從html中讀取數據的「簡單」方式。我會研究lxml,謝謝。 – mdeland