2016-07-22 3 views
1

私はウェブページからスクレイプするためにBS4を使用しようとしています。私が望むデータ(テーブルのプレイヤー名、「Claiborne、Morris」)が見つかりません。美味しいスープ4テーブル内のテキストを見つける

は、私が使用している場合:プレイヤーの名前の

soup = BeautifulSoup(r.content, "html.parser") 
PlayerName = soup.find_all("table") 
print (PlayerName) 

なしでも出力にない、それだけで別のテーブルを示しています。

私が使用:

soup = BeautifulSoup(r.content, 'html.parser') 
texts = soup.findAll(text=True) 
print(texts) 

私はそれらを見ることができます。

どのようにしてプレーヤー名を入手するのかアドバイスはありますか?

+0

データが動的に読み込まれます –

答えて

0

あなたが探しているテーブルは、ページがレンダリングされるときにJavaScriptによって動的に埋められます。たとえば、を使用してページを取得するとrequests、元の未修正ページのみを取得します。これは、ブラウザに表示されるいくつかの要素が失われることを意味します。

コードの2番目のスニペットでプレイヤー名が見つかるという事実は、ページのJavaScriptソースにJSONとして含まれているためです。ただし、JavaScriptを解析しないため、BeautifulSoupでそれらを取得することはできません。

Seleniumのようなものを使用することをお勧めします。これはできるだけブラウザを模倣し、JavaScriptコードを実行して、ブラウザで見られるのと同じページコンテンツをレンダリングします。

関連する問題