处理格式错误的 HTML(无结束标记)

Handle malformed HTML (no closing tags)

我使用 BeautifulSoup 通过 lxml 解析器解析 HTML。但是我遇到了一个 <table>:

中没有任何结束标记的文件
<table id='reportTable' class='report-table' style='width:auto' cellspacing='0'><tr>
<th>Номер<br>поезда<th>Дата<br>отправления<th>Маршрут<th>Причина<th>Комментарий<th>Станция ...

尽管 <table> 标签已正确关闭。

就我个人而言,我自己也遇到过这个问题,我 运行 使用 tidylib 通过 HTMLTidy 5 处理了整个文档。说我同意 C.Feenstra lxml 解析器可以容忍格式错误 html。如果你有 html 你真的不能用 lxml 解析器解析然后试试这个:

from tidylib import tidy_document

badHtml = "<table id='reportTable' class='report-table' style='width:auto' cellspacing='0'><tr><th>Номер<br>поезда<th>Дата<br>отправления<th>Маршрут<th>Причина<th>Комментарий<th>Станция ..."
options = {"output-bom": 0, "quiet": False, "word-2000": True,
           "output-encoding": 'utf8', "output-xhtml": 1, "add-xml-decl": 0,
           "tidy-mark": 0, "drop-proprietary-attributes": True,
           "show-warnings": False, }
tidiedHtml, errors = tidy_document(badHtml, options)

然后使用 "tidiedHtml" 为 BeautifulSoup