BeautifulSoup 截断 table

BeautifulSoup truncates table

我正在尝试编写一个 Python 脚本来处理所有 joyo kanji。但是,我的脚本仅获取 table 的前 504 个元素。完整的 table 有 2,136 个元素。此脚本演示了问题:

from bs4 import BeautifulSoup 
from urllib2 import urlopen

url = "http://en.wikipedia.org/wiki/List_of_j%C5%8Dy%C5%8D_kanji"
soup = BeautifulSoup(urlopen(url))

print soup.prettify()

table 显示的最后一个元素是:

   <tr>
   <td>
    504
   </td>
   <td style="font-size:2em">
    <a href="//">
    </a>
   </td>
  </tr>
 </table>

但是,当我查看 chrome 中的 table 时,我看到元素 504

<tr>
<td>504</td>
<td style="font-size:2em">
<a href="//en.wiktionary.org/wiki/%E6%BF%80" class="extiw" title="wikt:激">激</a>
</td>
...

我预计 table 的最后一个元素是元素 2,136。

看来您安装的 lxmllibxml(执行解析的实际 C 库)版本有问题。

我在 Python 2.7.9 和 lxml 3.4.2 和 libxml2 版本 2.9.0 上对我来说解析得很好。

您可以告诉 BeautifulSoup 使用标准库解析器:

soup = BeautifulSoup(urlopen(url), 'html.parser')

请参阅 Installing a parser 了解切换解析器的含义。