C\#프로그램 을 통 해 원 격 웹 페이지 정 보 를 자동 으로 캡 처 하 는 코드 구현

프로그램 을 통 해 다른 사이트 홈 페이지 에 표 시 된 정 보 를 자동 으로 읽 는 것 은 파충류 프로그램 과 유사 하 다.예 를 들 어 우 리 는 BaiDu 사이트 의 노래 검색 순 위 를 추출 하 는 시스템 이 있다.분석 시스템 은 얻 은 데이터 에 근거 하여 데이터 분석 을 하고 있다.업무 에 참고 자 료 를 제공 하 다.이상 의 수 요 를 완성 하기 위해 서 는 브 라 우 저 를 모 의 하여 웹 페이지 를 조회 하고 페이지 의 데 이 터 를 분석 한 다음 에 분석 한 구 조 를 정리 한 데 이 터 를 데이터 베이스 에 기록 해 야 합 니 다.그러면 우리 의 생각 은 1.HttpRequest 요청 을 보 내 는 것 입 니 다.2.HttpResponse 에서 돌아 온 결 과 를 받 습 니 다.특정 페이지 의 html 원본 파일 을 가 져 옵 니 다.3.데 이 터 를 포함 하 는 일부 소스 코드 를 추출 합 니 다.4.html 소스 코드 에 따라 HtmlDocument 를 생 성하 고 데 이 터 를 순환 적 으로 추출 합 니 다.5.데이터 베 이 스 를 기록 합 니 다.  프로그램 은 다음 과 같 습 니 다:        //Url 주소 에 따라 웹 페이지 의 html 소스 코드 를 받 습 니 다.         private string GetWebContent(string Url)          {              string strResult="";              try              {                  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); //HttpWebRequest 요청 설명                 request.Timeout = 30000;                 //연결 시간 초과 설정                 request.Headers.Set("Pragma", "no-cache");                  HttpWebResponse response = (HttpWebResponse)request.GetResponse();                  Stream streamReceive = response.GetResponseStream();                  Encoding encoding = Encoding.GetEncoding("GB2312");                  StreamReader streamReader = new StreamReader(streamReceive, encoding);                  strResult = streamReader.ReadToEnd();              }              catch              {                  MessageBox.Show("오류");             }              return strResult;          } HttpWebRequest 와 HttpWebResponse 를 사용 하기 위해 서 는 이름 공간 참조 using 을 입력 해 야 합 니 다. System.Net; 다음은 프로그램의 구체 적 인 실현 과정:private void button1_Click(object sender, EventArgs e)          {             //캡 처 할 URL 주소             string Url = "http://list.mp3.baidu.com/topso/mp3topsong.html?id=1#top2";             //지정 한 Url 의 원본 문자열 가 져 오기 strWebContent = GetWebContent(Url);              richTextBox1.Text = strWebContent;     //데이터 와 관련 된 그 소스 코드 를 꺼내다             int iBodyStart = strWebContent.IndexOf("", iTableStart);              string strWeb = strWebContent.Substring(iTableStart, iTableEnd - iTableStart + 8);             //HtmlDocument 웹 브 라 우 저 생 성 webb = new WebBrowser();              webb.Navigate("about:blank");              HtmlDocument htmldoc = webb.Document.OpenNew(true);              htmldoc.Write(strWeb);              HtmlElementCollection htmlTR = htmldoc.GetElementsByTagName("TR");              foreach (HtmlElement tr in htmlTR)              {                  string strID = tr.GetElementsByTagName("TD")[0].InnerText;                  string strName = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "MusicName");                  string strSinger = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "Singer");                  strID = strID.Replace(".", "");                 //데이터 테이블 삽입                 AddLine(strID, strName, strSinger,"0");                  string strID1 = tr.GetElementsByTagName("TD")[2].InnerText;                  string strName1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "MusicName");                  string strSinger1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "Singer");                 //데이터 테이블 삽입                 strID1 = strID1.Replace(".", "");                  AddLine(strID1, strName1, strSinger1,"0");                  string strID2 = tr.GetElementsByTagName("TD")[4].InnerText;                  string strName2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "MusicName");                  string strSinger2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "Singer");                 //데이터 테이블 삽입                 strID2 = strID2.Replace(".", "");                  AddLine(strID2, strName2, strSinger2,"0");              }             //데이터베이스 삽입             InsertData(dt);                  dataGridView1.DataSource = dt.DefaultView; }

좋은 웹페이지 즐겨찾기