2014-11-24 2 views
0

학교 프로젝트를 위해 ~ 1000 개의 웹 사이트 소스 코드를 받아야합니다. for 루프에서 HTTP Webrequest를 사용합니다. 그러나 내 목록에있는 절반 이상의 웹 사이트가 404 오류를 반환하므로 웹 사이트를 찾을 수 없습니다. Chrome, Firefox 또는 Internet Explorer에서이 웹 사이트를 탐색하면 모든 것이 올바르게 작동합니다.[C#] 웹 사이트 소스 코드 받기 (404 ERROR)

Heres는 내 코드는 소스 코드를 얻을 수 있습니다 :

public string getSource(string url){ 
     string urlAddress = url; 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress); 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     if (response.StatusCode == HttpStatusCode.OK) 
     { 
      Stream receiveStream = response.GetResponseStream(); 
      StreamReader readStream = null; 

      if (response.CharacterSet == null) 
      { 
       readStream = new StreamReader(receiveStream); 
      } 
      else 
      { 
       readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet)); 
      } 

      data = readStream.ReadToEnd(); 

      response.Close(); 
      readStream.Close(); 
     } 
     return data; 
    } 

을 어쩌면 때문이 아니라 1000 개 웹 사이트의 질량의 일을합니까?

+0

아마도 실패한 URL 중 일부를 체크 아웃해야합니다. – Kell

답변

0

알려지지 않은 "브라우저"의 요청을 거부하므로 많은 사이트에 대해 알려진 브라우저로 사용자 에이전트를 설정해야 할 수 있습니다. request.GetResponse를 호출하기 전에 시도하십시오.

var agent = "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)"; 
request.Headers.Add("user-agent", agent); 
+0

흠이 코드를 사용할 때 내 프로그램은 소스 코드를 다운로드하지 않고 파일의 행을 통해서만 실행됩니다. –