2017-05-01 11 views
0

2016シーズンのMLB.comからプレーヤーの統計情報を取得しようとしています。私はPythonで美しいスープを使用しています、と私はここで見て、テーブルに情報を抽出する必要があります。pythonでbeautifulsoupを使ってタグ内のサブタグにアクセスするには?

http://mlb.mlb.com/stats/sortable.jsp#elem=%5Bobject+Object%5D&tab_level=child&click_text=Sortable+Player+hitting&game_type='R'&season=2016&season_type=ANY&league_code='MLB'&sectionType=sp&statType=hitting&page=1&ts=1493672037085&playerType=ALL&sportCode='mlb'&split=&team_id=&active_sw=&position=&page_type=SortablePlayer&sortOrder='desc'&sortColumn=ab&results=&perPage=442&timeframe=&last_x_days=&extended=0

ここに私がしようとしたものである:

r=requests.get(url) 
soup=BeautifulSoup(r.content,'html.parser') 
gdata=soup.find_all('div',{'id':'datagrid'}) 
print(gdata) 

これはすべてを返す必要がありますタグ内のサブタグは表示されますが、表示されません。これにより、次のような結果になります。

[<div id="datagrid"></div>] 

これはなぜテーブルの内容を生成しないのか説明できますか?さらに、テーブルの内容にアクセスするにはどうすればよいですか?

おかげ

答えて

0

あなたがWebページのソースを見ればdatagrid div要素が&統計がthis URLからJSONとして動的に挿入され、実際に空であるように、それが見えます。たぶんそれを代わりに使うことができます。これを理解するために私はdiv要素は子供がなかったことを確認するために、ページのソースを見て、それがデータ引か要求見つけるために、Chromeデベロッパーツールに[ネットワーク]タブを使用:

  1. オープンWebページ
  2. 開きますコマンド+ Option + I(Mac)またはCtrl + Shift + I(Windows、Linux)のいずれかを選択します。
  3. それがネットワーク要求は、その後
  4. (別売)をロードするためにページを待つプロセスように思われる要求に、検索結果を絞り込むためにウェブ上の検索バーにxmlを入力して開いたツールを使用してWebページを更新データがあります
  5. 各リクエストをクリックし、応答のプレビューを見てください。この時点で、私はちょうど手動であなたのデータを持っていたかを見るために応答を調べました。私は運が良かったし、名前に統計があるので、最初の試行であなたを得ました。
+0

ありがとうございます!私は自分のデータにそのURLを使用することができます。私はまた、同じ場所から別のデータを見つける必要があります(別の統計情報)。データグリッドが情報を取得したURLをどのようにして決定したかをさらに詳しく説明できますか? –

+0

私はステップバイステップガイドを追加するために私の答えを編集しました – Kat

+0

私は正しいリクエストを見つけたと思いますので(この例では、 "bam.xml.js"というタイトルです)、ロードされたテーブルはxmlファイルです。しかし、私は依然としてリクエスト・レスポンス内にURLは表示されません。リクエストでURLがどこにあるのスクリーンショットを撮ることができますか? –

関連する問題