4

私はBeautifulSoupを使用していますが、バグまたはエラーが発生しました。私の例では、NYTimesのサブセクションサイトをクロールします...

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タグの内側にあるものは取得しません。WebサイトのURLをに変更するとhttp://www.nytimes.com、BSは全ページのソースを返します。ここで何が起こっているのでしょうか。また、クロールしたときにbodyタグが表示されないのはなぜhttp://www.nytimes.com/pages/politics/index.htmlですか。

4

1 に答える 1

1

これは BeautifulSoup のバグではありません。問題は実際には、bs4 が組み込みの HTMLParser を使用しているという事実にありますが、これは不正な HTML に対してあまり寛大ではなく、W3C マークアップ検証サービスが示すように、HTML は実際に不正な形式であり、囲まれていない、迷子になった、誤って配置されたタグがほとんどないため、HTMLParser が停止し、それに続いて BeautifulSoup が停止します。突然解析します。

この問題は、BeautifulSoup に対して提出された次のバグで説明されています。

不正な形式のタグの後、BS4 が解析を停止する

于 2013-01-14T07:29:53.027 に答える