2015-04-29 111 views
2

我試圖從MLB網站上刮取關於MLB球員的一些信息。 但是,使用urllib2和BeautifulSoup,我無法找到'div'下的內容。但我可以清楚地看到Chrome上的內容。使用BeautifulSoup找不到'div'的內容

一個例子是,去頁(http://mlb.mlb.com/team/player.jsp?player_id=150378)。右上方的狀態信息顯示「已發佈」。但是我找不到使用BS4的這個字符串/內容。

這裏是我的代碼:

base_url = 'http://mlb.mlb.com/team/player.jsp?player_id=150378' 
request = urllib2.Request(base_url) 
response = urllib2.urlopen(request) 
soup = BeautifulSoup(response) 
player_status = soup.findAll('div',id='player_status') 
print player_status 

,我希望它有一個像「狀態:已釋放」的字符串, 但結果只顯示

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

我以前從來沒有遇到過這種問題。有人可以幫我弄這個嗎? 謝謝!

回答

1

頁面上的播放器信息來自附加的XHR請求對JSON API的響應。你可以模擬它,例如,使用requests

>>> import requests 
>>> 
>>> url = "http://mlb.mlb.com/lookup/json/named.player_info.bam?sport_code=%27mlb%27&player_id=150378" 
>>> 
>>> response = requests.get(url) 
>>> data = response.json() 
>>> data['player_info']['queryResults']['row']['status'] 
Released 
+0

謝謝!但是如果我也想獲得職業生涯統計數據呢?另外,爲什麼你的網址與我的網址不同?你如何獲得該網址?謝謝! – Jason

+0

@Jason頁面數據是通過對不同API端點的一組異步調用動態構建的 - 您可以在瀏覽器開發工具 - 網絡選項卡中觀察它們。 – alecxe

+0

謝謝!我不太瞭解API的概念,以及本網站如何調用不同的API來檢索信息,以及如何使用網絡選項卡。你能否介紹我可以教的任何鏈接,並讓我着手這方面的工作? – Jason