2010-06-14 4 views
2

J'ai écrit un programme de scrappage Web pour aller à une liste de pages et écrire tout le code HTML dans un fichier. Le problème est que quand je tire un bloc de texte, certains des caractères s'écrivent ' '. Comment puis-je insérer ces caractères dans mon fichier texte? Voici mon code:Problème tirant des données à partir du site Web dans .NET et C#

string baseUri = String.Format("http://www.rogersmushrooms.com/gallery/loadimage.asp?did={0}&blockName={1}", id.ToString(), name.Trim()); 

// our third request is for the actual webpage after the login. 
HttpWebRequest request = 
(HttpWebRequest)WebRequest.Create(baseUri); 
request.Method = "GET"; 
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)"; 
//get the response object, so that we may get the session cookie. 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
StreamReader reader = new StreamReader(response.GetResponseStream()); 

// and read the response 
string page = reader.ReadToEnd(); 

StreamWriter SW; 
string filename = string.Format("{0}.txt", id.ToString()); 
SW = File.AppendText("C:\\Share\\" + filename); 

SW.Write(page); 

reader.Close(); 
response.Close(); 
+0

Problèmes de codage. Découvrez SO - http://stackoverflow.com/questions/2700638/characters-in-string-changed-after-downloading-html-from-the-internet/2700707#2700707 –

Répondre

1

Vous devez spécifier l'encodage dans cette ligne:

StreamReader reader = new StreamReader(response.GetResponseStream()); 

et

File.AppendText("C:\\Share\\" + filename); utilise UTF-8

2

vous enregistrez une page nommée loadimage dans un fichier texte. Êtes-vous sûr que c'est vraiment tout le texte? De toute façon, vous pouvez économiser beaucoup de code en utilisant System.Net.WebClient.DownloadFile().

0

Spécifiez le codage Unicode, comme ceci:

New StreamReader(response.GetResponseStream(), Text.Encoding.UTF8) 

..same pour le StreamWriter

Questions connexes