我想获取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();
}
答案 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();
所有库存数据都存储在页面源中,因此您可以使用正则表达式对其进行解析。