【问题标题】:Missing parts on Beautiful Soup resultsBeautiful Soup 结果中缺少部分
【发布时间】:2013-09-07 23:42:43
【问题描述】:

我正在尝试在以下 html 代码中检索几个 <p> 标记。这里只是其中的一部分

<td class="eelantext">
    <a class="fBlackLink"></a>
    <center></center>
    <span> … </span><br></br>
    <table width="402" vspace="5" cellspacing="0" cellpadding="3" 
        border="0" bgcolor="#ffffff" align="Left">
    <tbody> … </tbody></table>
      <!--edstart-->
    <p> … </p>
    <p> … </p>
    <p> … </p>
    <p> … </p>
    <p> … </p>
</td>

你可以找到网页here

我的Python代码如下

soup = BeautifulSoup(page)
div = soup.find('td', attrs={'class': 'eelantext'})
print div
text = div.find_all('p') 

但是 text 变量是空的,如果我打印 div 变量,除了&lt;p&gt; 标签之外,我有与上面完全相同的html。

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    BeautifulSoup 可以使用different parsers to handle HTML input。这里的 HTML 输入有点破,默认的HTMLParser 解析器处理的不是很好。

    请改用html5lib parser

    >>> len(BeautifulSoup(r.text, 'html').find('td', attrs={'class': 'eelantext'}).find_all('p'))
    0
    >>> len(BeautifulSoup(r.text, 'lxml').find('td', attrs={'class': 'eelantext'}).find_all('p'))
    0
    >>> len(BeautifulSoup(r.text, 'html5lib').find('td', attrs={'class': 'eelantext'}).find_all('p'))
    22
    

    【讨论】:

    • 谢谢。这是完美的工作。我必须先安装 html5lib,但现在可以了。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 2012-08-14
    • 2021-09-03
    • 2015-05-03
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多