C #을 일반적으로 웹 클라이언트, 웹 브라우저 또는 HttpWebRequest를 / HttpWebResponse 클래스를 사용하여 웹 콘텐츠를 세 가지 방법이있다.
A. 사용하여 웹 클라이언트
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 이용 시스템; 2 사용 System.Collections.Generic 단계; (3) 사용 System.IO 단계; (4) 이용 을 System.Linq 단계; 5 이용 System.Net; 6 이용 System.Text 단계; 7 사용 System.Threading.Tasks 단계; 8 9 스페이스 day0917가 10 { 11 클래스 프로그램 12 { 13 정적 무효 메인 ( 문자열 []에 args) 14 { 15 시도 16 { 17 웹 클라이언트 MyWebClient = 새로운 새로운 웹 클라이언트 (); 18 // 얻거나 인터넷 리소스 네트워크 인증 정보를 인증하도록 요청 설정 19 MyWebClient.Credentials의 =의 CredentialCache.DefaultCredentials; 20 개 // 특정 사이트에서 다운로드 된 데이터를 21 바이트 [] PageData MyWebClient.DownloadData = ( " http://www.163.com " ); (22) // 웹 페이지에 액세스 문구 사용, GB2312를 사용하는 경우 23 문자열 pageHtml = Encoding.Default.GetString (PageData) 24을 // Encoding.UTF8.GetString pageHtml = 문자열 (PageData) (25) //웹 페이지에 액세스 할 수는 UTF-8을 사용하는 경우 문구가 사용됩니다 (26) // 콘솔 입력 콘텐츠 수집을 (27) ; Console.WriteLine (pageHtml) (28) var에 파일 = 해당 AppDomain.CurrentDomain.BaseDirectory; 29 개 // 검색된의 내용을 텍스트 물품 (30) (가) 사용 (SW = StreamWriter는 새로운 신규 StreamWriter를가 ( @ " \ 과정 \ 총 \ 코드 \ 데이터를 페치 \ day0917 \ day0917가 a.txt이 \ E는 " )) (31)가 { 32 ; sw.Write (pageHtml) (33)는이 } 34 인 Console.ReadLine은 (); // 콘솔 일시 정지하자, 또는 덧 35 } (36) 캐치 (WebException이 WEBEX) 37 { 38 Console.WriteLine (webEx.Message.ToString ()); 39 } 40 Console.ReadKey (); 41 } 42 } 43 }
II.를 사용하여 웹 브라우저
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
(1) 웹 브라우저 웹 = 새로운 웹 브라우저 (); 2 web.Navigate ( " http://www.xjflcp.com/ssc/ " ); 3 web.DocumentCompleted + = 새로운 WebBrowserDocumentCompletedEventHandler (web_DocumentCompleted); (4) 공극은 (web_DocumentCompleted 오브젝트 송신자 WebBrowserDocumentCompletedEventArgs E) 5 { 6 웹 브라우저 = 웹 (웹 브라우저)를 송신기; 7 HtmlElementCollection을 ElementCollection = web.Document.GetElementsByTagName ( " 표 " ); 8 foreach는 (는 HTMLElement 항목 에 ElementCollection으로) 9 { 10 File.AppendAllText ( " Kaijiang_xj.txt " , item.InnerText); 11 } 12 }
III. 사용의 HttpWebRequest / HttpWebResponse 클래스
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
하나 의 HttpWebRequest httpReq; 2 HttpWebResponse 클래스 httpResp; 3 4 문자열 strBuff = "" ; 5 문자 [] = cbuffer 새로운 문자 [ 256 ]; 6 INT byteRead = 0 ; 7 8 문자열 파일 이름 = @ " C : \ log.txt에 " ; 9 /// 定义写入流操作 10 공공 공극 WriteStream () 11 { 12 열린 httpURL = 새로 열린 (txtURL.Text); (13) 14 /// 의 HttpWebRequest WebRequest 클래스 클래스에서 상속 및 방법 WebRequest 클래스 CREAT을 확립 할 필요성에 의해, 자신의 생성자하지 않으며, 필수 유형 변환 (15) httpReq = (HttpWebRequest를)이이 WebRequest.Create합니다 (HTTPUrl) 16 /// 로 HttpWebRequest를 HttpWebResponse 클래스를 설정하기위한하는 GetResponse () 메소드는, 캐스팅 (17). (18)가 httpResp = 합니다 (HttpWebResponse 클래스) httpReq.GetResponse () . 19 /// 하면 GetResponseStream ()는 HTTP 응답 데이터 스트림을 얻고, 콘텐츠의 URL에 지정된 페이지의 취득을 시도하는 방법 (20) 21 /// 페이지의 내용 성공이, 장소는 실패가 ProtoclViolationException 오류가 발생하면, 형성 돌아 System.IO.Stream에합니다. try 블록에 다음 처리 코드는 올바른 방법으로해야한다. 다음은 간단한 처리 (22)는 스트림 respStream = httpResp.GetResponseStream (); (23)가 24 ///스트림 콘텐츠의 형태로 콘텐츠하면 GetResponseStream는 StreamReader 클래스를 사용하여 획득 될 수있다 리턴 (25) (26) (판독 컨텐츠 페이지의 소스 코드를 순차 읽기 방법에서는 StreamReader 클래스 코딩 포맷 라인마다 라인 단부를 읽어 UTF8 ) 27 에서는 StreamReader respStreamReader = 새로운 새 에서는 StreamReader (respStream, Encoding.UTF8) 28 29 byteRead = respStreamReader.Read (cbuffers, 0 , 256 ), 30 (31)이 그동안 ! (byteRead = 0 ) 32 { 33 인 문자열 strResp = 새로운 새 문자열 (cbuffers, 0 , byteRead) (34)는 strBuff + = strBuff strResp; 35 byteRead = respStreamReader.Read (cbuffer, 0 , 256 ); 36 } 37 38 respStream.Close (); 39 txtHTML.Text = strBuff; 40 }
위는 전체 페이지의 모든 데이터를 얻을 수 있으며, 어떤 치료를하지 않았다
이제 우리는 다음 기사 쓰기를 얻기 위해 데이터 NSoup에 따라 처리 데이터에 수행 할 수 있습니다