2013-02-05 72 views
0

我是编程的新手。我有一个项目,我必须从网站获取数据(我将在下面发布网站)。但碰巧我首先必须选择一个日期并按下'Go'按钮,然后点击另一个按钮/链接'在Excel中查看'来下载这些数据。在找到我需要的日期后,我找不到第一个点击'开始'按钮的方法,然后点击第二个按钮'在Excel中查看'通过我的c#代码。 任何帮助将不胜感激。通过双击按钮从.aspx网页获取数据c#.net

PS:您可以检查该链接为自己http://www.mcxindia.com/sitepages/BhavCopyDateWiseArchive.aspx

private void Form1_Load(object sender, EventArgs e) 
    { 
     WebClient webClient = new WebClient(); 

     byte[] b = webClient.DownloadData("http://www.mcxindia.com/sitepages/BhavCopyDatewise.aspx"); 

     string s = System.Text.Encoding.UTF8.GetString(b); 

     var __EVENTVALIDATION = ExtractVariable(s, "__EVENTVALIDATION"); 

     //__EVENTVALIDATION.Dump(); 

     var forms = new NameValueCollection(); 

     forms["__EVENTTARGET"] = "btnLink_Excel"; 
     forms["__EVENTARGUMENT"] = ""; 
     forms["__VIEWSTATE"] = ExtractVariable(s, "__VIEWSTATE"); 
     forms["mTbdate"] = "01%2F15%2F2013"; 
     forms["__EVENTVALIDATION"] = __EVENTVALIDATION; 

     webClient.Headers.Set(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"); 

     var responseData = webClient.UploadValues(@"http://www.mcxindia.com/sitepages/BhavCopyDatewise.aspx", "POST", forms); 
     System.IO.File.WriteAllBytes(@"c:\11152011.csv", responseData); 
    } 

    private static string ExtractVariable(string s, string valueName) 
    { 
     string tokenStart = valueName + "\" value=\""; 
     string tokenEnd = "\" />"; 

     int start = s.IndexOf(tokenStart) + tokenStart.Length; 
     int length = s.IndexOf(tokenEnd, start) - start; 
     return s.Substring(start, length); 
    } 

上面的代码给我的文件,只在最后可用日期。我无法在我想要的日期得到它。

+1

为什么你想要做的两个步骤,而不是你能做到在单一的按钮点击 –

+0

分享你的代码,指定什么地方工作,什么都没有。 – nunespascal

+0

我已添加验证码请检查 –

回答

0

我找到了这个问题的解决方案。 请参见here

1

似乎你需要发一个POST文件数据(日期)的HTTP POST请求。这应该很容易。看看这个问题,看看它是否可以帮助你。 Send HTTP Post Request through ASP.net

+0

我在问题中添加了一些代码。我发现它在某个地方,并试图在我的情况下使用它。我不知道如何将日期传递给POST请求。你可以请检查并给我任何方式,我可以做到这一点。 –