c\#웹 페이지 데이터 분석 캡 처

3630 단어 c#Web웹 데이터
이상 의 수 요 를 완성 하기 위해 서 는 브 라 우 저 를 모 의 하여 웹 페이지 를 조회 하고 페이지 의 데 이 터 를 분석 한 다음 에 분석 한 구 조 를 정리 한 데 이 터 를 데이터 베이스 에 기록 해 야 합 니 다.그러면 우리 의 생각 은 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
   string strWebContent = GetWebContent(Url);
richTextBox1.Text = strWebContent;
   //
int iBodyStart = strWebContent.IndexOf("<body", 0);
int iStart = strWebContent.IndexOf(" TOP500", iBodyStart);
int iTableStart = strWebContent.IndexOf("<table", iStart);
int iTableEnd = strWebContent.IndexOf("</table>", iTableStart);
string strWeb = strWebContent.Substring(iTableStart, iTableEnd - iTableStart + 8);
// HtmlDocument
   WebBrowser 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(".", "");
// DataTable
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");
// DataTable
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");
// DataTable
strID2 = strID2.Replace(".", "");
AddLine(strID2, strName2, strSinger2,"0");
}
//
InsertData(dt);
   
dataGridView1.DataSource = dt.DefaultView;
}

좋은 웹페이지 즐겨찾기