2013-03-08 120 views
1

我要从网站中提取一些数据,我使用HTML敏捷包,但令人惊讶的是,当我使用其远程地址时,无法正确分析此网站,所以我必须将文件保存到本地系统,然后使用HTML敏捷包。如何将此文件复制到我的服务器,然后使用HTML敏捷包来分析和提取数据?将html文件保存到本地系统使用ASP.NET

比如这是我的远程文件: www.testsite.com/testfile.html

我要将该文件保存到我的服务器,然后与本地文件(我使用C#)

工作

回答

0

你可以采取的http web request利益和http web response

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.testsite.com/testfile.html"); 
req.Method = "POST"; 
req.ContentType = "application/x-www-form-urlencoded"; 
//string login = string.Format("go=&Fuser={0}&Fpass={1}", user, password); 
//byte[] postbuf = Encoding.ASCII.GetBytes(login); 
//req.ContentLength = postbuf.Length; 
Stream rs = req.GetRequestStream(); 
rs.Write(postbuf,0,postbuf.Length); 
rs.Close(); 
WebResponse resp = req.GetResponse(); 

现在你可以投你的应答流,并将其保存为HTML文件

// we will read data via the response stream 
Stream ReceiveStream = resp.GetResponseStream(); 

string filename = ...; 

byte[] buffer = new byte[1024]; 
FileStream outFile = new FileStream(filename, FileMode.Create); 

int bytesRead; 
while((bytesRead = ReceiveStream.Read(buffer, 0, buffer.Length)) != 0) 
outFile.Write(buffer, 0, bytesRead); 
+0

它给我错误,什么是postbuf?我怎么用它?为什么它评论? – 2013-03-08 05:17:50

1

经过我的调查后,我发现使用WebRequest将无法获得完整的HTML源代码,因为页面的其他部分被单独调用,如使用ajax,css,图像等数据。有解决方案可以获得一个页面的完整html代码,并且使用WebBrowser控件,但是您应该使用Windows应用程序。这里试试这个解决方案

  1. 创建Windows应用程序。

  2. 从工具箱中拖放WebBrowser控件。

  3. 在Form-Load上添加下面的代码。

    webBrowser1.Url = new Uri(“http://tse.ir/default.aspx”); webBrowser1.DocumentCompleted + = webBrowser1_DocumentCompleted;

  4. 添加以下方法。

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
        { 
         var browser = sender as WebBrowser; 
         var htmlPath = Path.Combine("C:\\Test", "testhtml.html"); 
         using (var writer = new StreamWriter(htmlPath, false, Encoding.UTF8)) 
         { 
          if (browser != null) writer.WriteLine(browser.DocumentText); 
          writer.Close(); 
         } 
        } 
    
  5. 运行您的应用程序并检查保存的文件。

+0

感谢,它的工作原理,但有一些奇怪的地方,请使用这个地址(当然它是波斯语,但你可以很容易地看到远程文件和本地文件之间的区别)。当这个地址被保存时,本地系统上几乎没有任何内容存储,并且页面中只有一个警告,告诉页面当前不可用,请稍后参考,出现了什么问题?为什么这个网页没有被正确保存? – 2013-03-08 05:25:26

+0

您能举出遇到该警告的网站的示例网址吗? – 2013-03-08 05:29:25

+0

http://tse.ir/default.aspx,此页面不能正确保存,此页面也是:http://jahanesanat.ir/currency.html – 2013-03-08 05:32:08

相关问题