2016-04-08 131 views
0

我正在做一些個人數據科學項目,其中一個是看某些歌曲在收音機上播放的頻率。在Python/R中的網頁抓取javascript

http://www.iheart.com/live/radio-1045-3401/

看着上面的網址,當我看着頁面的源代碼,沒有興趣填入值。不知道爲什麼,但是當我將鼠標懸停在「正在播放」標題上時,在Chrome中使用檢查元素時,可以看到正在播放的歌曲和藝術家的值。

例子:

a class="player-song" href="/artist/rem-3610/songs/-2450662/" title="Losing My Religion" data-reactid=".1hpdfx1l4ow.a.1.0.1.1">Losing My Religion</a 

我的兩個問題是:

  1. 爲什麼沒有這個顯示頁面的源代碼,但我可以看到它在檢查元素?
  2. 我怎麼會網頁刮這個信息,因爲它沒有出現在頁面源?
+0

沒有檢查過,但它可能是由javascript生成的內容,在這種情況下,您可以在python – juvian

+1

中使用硒,您可能也可以使用它們的API獲取數據.. http://developer.iheart.com/Api/login –

回答

3
  1. 大部分網頁涉及動態元素已經產生,並通過插入的JavaScript的瀏覽器解析並執行你的頁面元素。根據問題標題,您已經猜到了這一點,我懷疑。

    您在頁面源代碼中看到的是原始HTML 之前 Javascript啓動並更新它。

  2. 你想要一個headless browser:一個沒有圖形用戶界面的瀏覽器。這將爲您解析和執行Javascript,並相應地更新頁面HTML。


這裏是一個full list of headless browsers。請注意,您可以使用任何語言來完成此任務。

+0

MechanicalSoup在自述中聲明它不會執行JavaScript,而RoboBrowser是請求和beautifulSoup的混合,所以我認爲不是。不太確定機械化。雖然很好的答案。 – Ehvince