2013-02-12 74 views
2

因此,我遇到過一個問題,那就是我最喜歡的電臺播放的歌曲是我開車時不知道的歌曲。他們沒有顯示他們播放的歌曲列表的頁面之一;然而,他們的網站上有一個「正在播放」部分,顯示了當前正在播放的內容以及由誰播放。所以,我正在嘗試編寫一個小程序,它會在2分鐘內對網站進行輪詢,以檢索歌曲和藝術家的名字。使用Chrome開發工具,我可以在源代碼中看到歌曲標題和藝術家。但是當我查看頁面源時,它不顯示。他們正在使用JavaScript來運行顯示該信息。我已經試過如下:從網站獲取「真實」的HTML源代碼

private void button1_Click(object sender, EventArgs e) 
{ 
    webBrowser1.Navigate(@"http://www.thebuzz.com/main.html"); 

    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
} 

private void webBrowser1_DocumentCompleted(object sender, 
           WebBrowserDocumentCompletedEventArgs e) 
{ 
    do 
    { 
     // Do nothing while we wait for the page to load 
    } 
    while (webBrowser1.ReadyState == WebBrowserReadyState.Loading); 

    var test = webBrowser1.DocumentText; 
    textBox1.Text = test.ToString(); 
} 

本質上講,我加載到一個WebBrowser,並試圖獲得源代碼這種方式。但是我仍然沒有得到JavaScript運行後的部分。事實之後有沒有辦法實際檢索呈現的HTML?

編輯

此外,有沒有在WebBrowser辦法,讓腳本運行?我得到彈出式窗口問我是否允許它們運行。我不想壓制他們,我需要他們跑步。

+0

爲什麼不只是使用Shazam或SoundHound? – 2013-02-12 14:52:47

+0

使用Tunatic或Shazam之類的工具怎麼樣?這很容易:) – 2013-02-12 14:53:06

+4

因爲有時候這些東西不起作用。另外,如果我這樣做,我不會學習如何做到這一點。 – MyCodeSucks 2013-02-12 14:53:45

回答

7

由於Jay Tomten在評論中說,你試圖修復你的問題的結果,而不是原因。問題的原因是他們正在使用Javascript更新頁面的這一部分。而不是通過讓Javascript進行更新然後閱讀它寫的內容來解決這個問題,而是問自己Javascript從哪裏獲取信息以及是否可以去同一個地方。例如,打開一些可以查看網絡流量的東西 - Fiddler或Chrome的開發控制檯。留意POST電話。其中一個可能是AJAX請求,其中頁面上的Javascript正在獲取當前歌曲。請注意URL,檢查該調用以查看它發送的參數以及返回的數據。您可以使用Postman或類似的東西來組裝POST請求,並計算出該網站上的Javascript如何獲取其數據,然後編寫一段代碼來自己調用該URL並解析返回的內容。

+0

是的,我終於明白了,遵循了周杰倫的建議,謝謝。 – MyCodeSucks 2013-02-12 15:25:17

+0

一定要讓傑伊好起來;他也有同樣的想法:P – anaximander 2013-02-13 08:57:12

+0

I雖然他只發表了評論,所以它不計入代表。 – MyCodeSucks 2013-02-13 14:00:43