<p>为什么不使用regex来实现这一点,您不需要解析实际的HTML(除非您还需要位置信息):</p>
<pre><code>import re
data = """
<div class="rbody">
<div style="color:#ff6666"> </div>
<i>objectid: </i> 137000<br/>
<i>topoid: </i> 504514394<br/>
<i>poigroup: </i> Hydrography<br/>
<i>poitype: </i> Manmade Waterbody<br/>
<i>poiname: </i> FOUR CORNERS DAM<br/>
<i>poilabel: </i> FOUR CORNERS DAM<br/>
<i>poilabeltype: </i> NAMED<br/>
<i>poialtlabel: </i> <br/>
<i>Point:</i><br/>
<i>X: </i> 1.5778346701624997E7 <br/>
<i>Y: </i> -3861557.6243750006 <br/>
<br/><br/>
</div>
"""
parsed = dict(element for element in re.findall(r"<i>\s*(.*?):.*?</i>\s*(.*?)\s*<br/>", data))
print(parsed)
# {'poigroup': 'Hydrography', 'objectid': '137000', 'topoid': '504514394', 'poilabeltype': 'NAMED', 'X': '1.5778346701624997E7', 'Point': '', 'poialtlabel': '', 'poitype': 'Manmade Waterbody', 'poiname': 'FOUR CORNERS DAM', 'poilabel': 'FOUR CORNERS DAM', 'Y': '-3861557.6243750006'}
</code></pre>
<p>如果要将X和Y转换为浮点数等,则可能需要进行额外的后处理。对于通用解决方案,您可能希望尝试将每个值转换为您可以接受的值:</p>
^{pr2}$
<p>工作原理:很简单,它在<code><i></code>和<code><br/></code>标记之间搜索两个匹配的组—一个紧跟在它后面,允许空白,另一个在<code></i></code>后面,允许空白。所有这样的匹配都被捕获,并使用第一个捕获的组作为键,第二个作为新的<code>dict</code>的值进行循环。在</p>