Python BeautifulSoup仅返回head标记内的内容

Python BeautifulSoup仅返回head标记内的内容,python,url,web-crawler,beautifulsoup,Python,Url,Web Crawler,Beautifulsoup,我正在与BeautifulSoup合作,要么是我发现了一个bug,要么是我犯了一个错误。在我的例子中,我抓取了纽约时报的一个子网站 import urllib2 from bs4 import BeautifulSoup website = "http://www.nytimes.com/pages/politics/index.html" data = BeautifulSoup(urllib2.urlopen(website).read()) print data 当我运行代码时,返回的是

我正在与BeautifulSoup合作,要么是我发现了一个bug,要么是我犯了一个错误。在我的例子中,我抓取了纽约时报的一个子网站

import urllib2
from bs4 import BeautifulSoup
website = "http://www.nytimes.com/pages/politics/index.html"
data = BeautifulSoup(urllib2.urlopen(website).read())
print data

当我运行代码时,返回的是head标记和其中的内容。但是,它不会获取body标签中的内容。如果我将网站url更改为
http://www.nytimes.com
然后BS返回整页源代码。这里发生了什么,为什么我在爬行时没有得到身体标签
http://www.nytimes.com/pages/politics/index.html

这不是BeautifulSoup中的错误。问题实际上在于,bs4使用内置的HTMLPasser,它对格式错误的HTML不太宽容,正如图所示,HTML确实格式错误,并且几乎没有未关闭、散乱和错位的标记,导致HTMLPasser和随后的BeautifulSoup突然停止解析

以下针对BeautifulSoup提交的bug中已解释了此问题


无法复制。当我运行这段代码时,它会得到完整的页面,而不仅仅是
标题
标签。。。问题中的代码与我的文件中的内容一字不差。我会说它还抓取了
html
标记。这就像是
body
标签不存在一样。您使用的是什么版本的BeautifulSoup?需要明确的是,如果在上面的代码(并且仅在上面的代码)之后打印
data.body
,它将打印
None
?(对我来说,它打印
主体
标记的内容)我有BS4,是的,它打印
。有趣。。。旧版本没有这个错误,所以这看起来像个bug。