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。
看来您安装的 lxml
或 libxml
(执行解析的实际 C 库)版本有问题。
我在 Python 2.7.9 和 lxml
3.4.2 和 libxml2
版本 2.9.0 上对我来说解析得很好。
您可以告诉 BeautifulSoup 使用标准库解析器:
soup = BeautifulSoup(urlopen(url), 'html.parser')
请参阅 Installing a parser 了解切换解析器的含义。
我正在尝试编写一个 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。
看来您安装的 lxml
或 libxml
(执行解析的实际 C 库)版本有问题。
我在 Python 2.7.9 和 lxml
3.4.2 和 libxml2
版本 2.9.0 上对我来说解析得很好。
您可以告诉 BeautifulSoup 使用标准库解析器:
soup = BeautifulSoup(urlopen(url), 'html.parser')
请参阅 Installing a parser 了解切换解析器的含义。