2012-10-29 11 views
5

Mam aplikację C# Windows Forms, która uruchamia stronę w oparciu o pewne kryteria.jak skopiować cały tekst z określonej strony internetowej i zapisać go w notatniku C#

Teraz chciałbym, aby moja aplikacja automatycznie kopiowała cały tekst z tej strony (który jest w formacie CSV) i wkleja i zapisuje w notatniku.

Tu jest link do przykładu danych, które muszą być skopiowane: http://www.wunderground.com/history/airport/FAJS/2012/10/28/DailyHistory.html?req_city=Johannesburg&req_state=&req_statename=South+Africa&format=1

Każda pomoc będzie mile widziane.

Odpowiedz

2

http://msdn.microsoft.com/en-us/library/fhd1f0sw.aspx połączeniu z http://www.dotnetspider.com/resources/21720-Writing-string-content-file.aspx

public static void DownloadString() 
{ 
    WebClient client = new WebClient(); 
    string reply = client.DownloadString("http://www.wunderground.com/history/airport/FAJS/2012/10/28/DailyHistory.html?req_city=Johannesburg&req_state=&req_statename=South+Africa&format=1"); 

    StringBuilder stringData = new StringBuilder(); 
    stringData = reply; 
    FileStream fs = new FileStream(@"C:\Temp\tmp.txt", FileMode.Create); 
    byte[] buffer = new byte[stringData.Length]; 
    for (int i = 0; i < stringData.Length; i++) 
    { 
     buffer[i] = (byte)stringData[i]; 
    } 
    fs.Write(buffer, 0, buffer.Length); 
    fs.Close(); 
} 

Edycja Adil używa metody WriteAllText, która jest jeszcze lepsza. Więc dostaniesz coś takiego:

WebClient client = new WebClient(); 
string reply = client.DownloadString("http://www.wunderground.com/history/airport/FAJS/2012/10/28/DailyHistory.html?req_city=Johannesburg&req_state=&req_statename=South+Africa&format=1"); 
System.IO.File.WriteAllText (@"C:\Temp\tmp.txt", reply); 
+0

Dziękuję bardzo. To jest w rzeczywistości najprostszy i najszybszy sposób. Dzięki –

1

Potrzebujesz WebRequest, aby odczytać strumień i zapisać do pliku tekstowego. Możesz użyć File.WriteAllText, aby zapisać go do pliku.

WebRequest request = WebRequest.Create ("http://www.contoso.com/default.html"); 
        request.Credentials = CredentialCache.DefaultCredentials;    
HttpWebResponse response = (HttpWebResponse)request.GetResponse();    
Console.WriteLine (response.StatusDescription);    
Stream dataStream = response.GetResponseStream();    
StreamReader reader = new StreamReader (dataStream);    
string responseFromServer = reader.ReadToEnd(); 
System.IO.File.WriteAllText (@"D:\path.txt", responseFromServer); 
+0

+1 za słowo "WriteAllText"! –

0

Można użyć WebClient aby to zrobić:

System.Net.WebClient wc = new System.Net.WebClient(); 
byte[] raw = wc.DownloadData("http://www.wunderground.com/history/airport/FAJS/2012/10/28/DailyHistory.html?req_city=Johannesburg&req_state=&req_statename=South+Africa&format=1"); 

string webData = System.Text.Encoding.UTF8.GetString(raw); 

następnie ciąg Webdata zawiera pełny tekst stronie

+0

Można również użyć metody "DownloadString" –

+0

Myślę, że StringBuilder jest preferowany ze względu na duże dane? tylko pytam, czy jestem nowy. –

+0

Dane przykładowe to 941 bajtów. –

5

można użyć nową zabawkę HttpClient z .NET 4.5, przykład jak dostać Google Page:

var httpClient = new HttpClient(); 
File.WriteAllText("C:\\google.txt",  
          httpClient.GetStringAsync("http://www.google.com") 
            .Result); 
+1

+1 za zupełnie nowy Async! :) –

+0

Czy to działa w .NET 4.0? –

+0

@Mr_Green: tak, nadal działa, ale musisz zainstalować bibliotekę, która zawiera HttpClient z nuget –

3

Prosty sposób: użyj WebClient.DownloadFile i zapisać jako .txt file:

var webClient = new WebClient(); 
webClient.DownloadFile("http://www.google.com",@"c:\google.txt"); 
Powiązane problemy