从互联网获取html源代码时的一些问题

时间:2013-07-06 10:56:54

标签: c#

我想获取html源来分析股票信息,所以我使用以下内容 通过c#获取html数据的示例代码,当我编译并运行时,返回值参数 result 获得字符串值等于:

<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 $ - &gt; 364,29.15 $ - &gt; 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 个答案:

答案 0 :(得分: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();

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