0

我想获取html源码来分析股票信息,所以我使用下面的示例代码通过c#获取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$ 或每个股票编号,例如 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();
}
4

1 回答 1

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();

所有股票数据都存储在页面源中,因此您可以使用正则表达式对其进行解析。

于 2013-07-06T12:17:10.550 回答