2013-07-06 45 views
0

我想獲取html源碼來分析股票信息,所以我使用以下 示例代碼通過c#獲取html數據,而我編譯它並運行時,返回值參數結果得到一個字符串值等於:從互聯網獲取html源代碼時的一些問題

<html> 
    <head></head> 
    <body> 
    <form id='submit_form' name='submit_form' method='post' 
      action='http://pchome.syspower.com.tw/stock/sto0/ock2/sid2404.html'> 
     <input type='hidden' name='is_check' value='1' /> 
    </form> 
    <script type="text/javascript"> 
     document.getElementById('submit_form').submit(); 
    </script> 
    </body> 
</html> 

(不完全一樣,但非常相似,我縮進數據一點點,使其可讀)

我想要得到的價格數據如29.15 $或每個股票的數量r像29.20 $ - > 364,29.15 $ - > 174,但返回值中沒有任何數據。

有人可以給我一些建議來解決這個問題嗎?非常感謝:)

string urlAddress = "http://pchome.syspower.com.tw/stock/sto0/ock2/sid2404.html"; 
private void button1_Click(object sender, EventArgs e) 
{ 
    WebRequest myRequest = WebRequest.Create(urlAddress); 
    myRequest.Method= "GET"; 
    WebResponse myResponse =myRequest.GetResponse(); 
    StreamReader sr = new StreamReader(myResponse.GetResponseStream()); 
    string result =sr.ReadToEnd(); 
    sr.Close(); 
    myResponse.Close(); 
} 
+1

嘗試直接解析結果HTML聽起來像是一個壞主意......首先... – Liel

+0

嘗試http://www.visualwebripper.com/它可能更容易 – MEYWD

+1

他們可能使用AJAX調用更新網站後已經下載了最初的HTML腳手架。另外請注意,通常情況下你不允許做這種事情。 –

回答

1

該網站每次訪問該頁面時都會自動重定向。爲了解決這個問題,您需要提交頁面源代碼中指定的隱藏字段。我只是測試這一點,它的工作原理:

string urlAddress = "http://pchome.syspower.com.tw/stock/sto0/ock2/sid2404.html"; 
var request = (HttpWebRequest) WebRequest.Create(urlAddress); 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = 10; 
var requestStream = request.GetRequestStream(); 
requestStream.Write(Encoding.UTF8.GetBytes("is_check=1"), 0, 10); 
requestStream.Close(); 
var response = (HttpWebResponse) request.GetResponse(); 
var sr = new StreamReader(response.GetResponseStream()); 
string result = sr.ReadToEnd(); 
sr.Close(); 
response.Close(); 

所有股票數據存儲在頁面的源代碼,以便您可以使用正則表達式解析它。

+0

謝謝^^〜master131 – user1328842