我已经这样做了:
>>> from bs4 import BeautifulSoup; import urllib2
>>> data = urllib2.urlopen('http://api.stackexchange.com/docs/').read()
>>> soup = BeautifulSoup(data.replace('""','"')) # there are errors on page
>>> soup.prettify()
<!DOCTYPE HTML>
<html lang="en">
............... # cut short
</html>
data
似乎没问题,正如预期的那样。问题出在soup
.
soup.prettify()
没有输出包含数据中所有内容的字符串。似乎soup
没有解析(或不管它做什么)整个字符串。
如果您检查网页的来源和 的输出soup.prettify()
,您会发现它们不匹配。
这里发生了什么,为什么?
感觉这篇文章我不是很清楚,如果有,请发表评论。我会尝试详细说明。否则请随意删除这句话...
更新
在回复 FakeRainBrigand 的评论时,我想说即使使用浏览器保存 html,问题仍然存在......所以,即使这样也有同样的问题:
data = open('Stack Exchange API.htm').read()