2017-01-26 99 views
0

我有麻煩從特定頁面刮取信息。BeautifulSoup不能報廢某個頁面,而是報廢根頁面

我想從URL http://csgo-stats.com/epsilon-/但由於網站處理事情BeautifulSoup只從根頁面收集數據的方式收集數據,又名http://csgo-stats.com

是否有重定向回事這就是跳閘註冊BS?我可以在BS輸出,它試圖加載我的數據的HTML看到,但BS捕獲太快

<main class="site-content" id="content"> 
     <div class="loading-spinner" data-request="epsilon-" id="load"> 
      Loading 
     </div> 

這裏是以防萬一它需要使用的代碼林:

from urllib.request import urlopen 
from bs4 import BeautifulSoup 

url = "http://csgo-stats.com/Epsilon-/" 
soup = BeautifulSoup(urlopen(url)) 
print(soup.prettify()) 

任何建議?謝謝!

+0

試試這一個是模擬一個瀏覽器,並應該完美地執行JavaScript:http://phantomjs.org/ – tim

+0

或者你可以直接使用Steam API(http://stackoverflow.com/q/27752856/344286) –

+0

只要你知道,在收到答案後,無需編輯感謝您的問題。如果你發現了一些實質性的東西,而這些東西並不包含在現有的答案中,那麼你很樂意爲你自己創建一個新的答案。 – halfer

回答

0

問題是,urllib.request不處理Javascript。嘗試訪問禁用Javascript的頁面。更多關於啓動Javascript刮:Web-scraping JavaScript page with Python

它總是最好避免刮如果API提供(Getting CS:GO player stats

+0

我其實並沒有意識到蒸汽API是誠實的。我會用這個來繞過我的整個問題。謝謝你讓我知道! 我選擇你的答案作爲解決方案,因爲它是最簡單的,正是我所需要的,沒有任何額外的麻煩。謝謝! –

0

雖然大多數HTTP內容庫(美麗的湯,請求,...)都可以獲得頁面源代碼,這不是頁面在瀏覽器中呈現後的外觀。這與HTML代碼今天的構建方式有關,這是因爲當頁面上的所有JavaScript都起作用時,大部分頁面渲染都會發生。這正是爲什麼你沒有看到「最終」的內容。

現在,如果您希望在播放所有JavaScript音樂後以瀏覽器呈現方式收集內容,則需要另一種(Python)庫,該庫爲Selenium。

更多關於硒對:http://www.seleniumhq.org/

只是爲了提醒你,硒是相當大的野獸有很多毛茸茸的末端,但學習是值得的(不僅是刮)

+0

我一定會考慮這個。謝謝 –