【问题标题】:Parsing Malformed HTML in Python gives index out of range error在 Python 中解析格式错误的 HTML 会导致索引超出范围错误
【发布时间】:2017-06-20 01:26:06
【问题描述】:

这是我要解析的 HTML 部分:

<div class="syntax-container">
<h2>Official Syntax</h2>
<ul>
  <li>
    <strong>Syntax: </strong> </p>
  <pre>text-align: start | end | left | right | center | justify</pre>
  </li>
  ...and so on.

这是我的 Python 代码:

soup = bs4.BeautifulSoup(res.text, "html.parser")
propSyntax  = ''.join(soup.select('.syntax-container pre')[0].findAll(text=True))
propSyntax  = propSyntax.strip()
propSyntax  = '<h2>Syntax</h2>' + '<p><pre>' + propSyntax + '</pre></p>'

这是我得到的错误:

propSyntax  = ''.join(soup.select('.syntax-container pre')[0].findAll(text=True))
IndexError: list index out of range

我知道错误是因为&lt;/strong&gt; 之后的额外&lt;/p&gt;,但我不知道如何摆脱这个错误并正确解析数据。如有任何帮助,我们将不胜感激。

【问题讨论】:

    标签: python python-3.x python-3.5 bs4


    【解决方案1】:

    你试过美化吗?如果没有尝试:

    soup.prettify()
    

    soup.prettify().select('.syntax-container pre')[0].findAll(text=True)
    

    【讨论】:

    • 我认为这造成了一个无限循环,因为在我更新代码后控制台中没有发生任何事情。
    • 试试propSyntax = "".join(soup.select(' pre')[0].findAll(text=True))
    • 我已经做到了,它有效,但我需要一个更通用的解决方案,因为标签会经常变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 2015-02-13
    • 1970-01-01
    相关资源
    最近更新 更多