c#2010.06.17 18:03

역시 참고는 msdn이 최고

http://msdn.microsoft.com/ko-kr/library/system.windows.forms.htmldocument_members.aspx

내가 할려는것은 세계 휴일 data를 긁어와서 xml로 파싱하는것이다.

근데 이게 xml이나 api로 뽑아내주는 사이트가 없어서 직접 제공해주는 사이트의 html을 읽어와서 파싱해서 xml 파일로 저장할려고 한다.

일단 저장은 나중에 하고 string으로 받게 하였다. 이런식으로 node 하나하나 노가다로 찾아가면서(익스에서 f12키로 노드를 찾아보면 편하다)…

 

일단 소스가 다 말해주듯 소스를 보자

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

//for local file
string htmlSource = File.ReadAllText(@"d:\1.htm");
WebBrowser webControl = new WebBrowser();
webControl.DocumentText = htmlSource;

//for webpage file
#region webrequest
HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create("http://www.timeanddate.com/calendar/?year=2010&country=40");
WebRequestObject.UserAgent = ".NET Framework/2.0";
WebRequestObject.Referer = "http://www.example.com/";
WebResponse Response = WebRequestObject.GetResponse();
Stream WebStream = Response.GetResponseStream();
StreamReader Reader = new StreamReader(WebStream);
string PageContent = Reader.ReadToEnd();
#endregion

HtmlDocument doc = webControl.Document.OpenNew(true);
//doc.Write(htmlSource); //for local
doc.Write(PageContent);

foreach (HtmlElement item in doc.GetElementsByTagName("div"))
{
if (item.Id == "calarea")
{

foreach (HtmlElement itemTable in item.GetElementsByTagName("table"))
{
if (itemTable.Id == "ch1")
{
//foreach (HtmlElement itemTbody in itemTable.GetElementsByTagName("tbody")[0].GetElementsByTagName("table"))
//{
// var temp = 1;
//}
string value = itemTable.GetElementsByTagName("tbody")[0].GetElementsByTagName("table")[0].InnerText;

}
}
}
}
}
}





 



보면 알겠지만 윈폼으로 대충 짯다 ㅋㅋ



로컬용 은 주석만 지우면 된다.

Posted by 동동(이재동)