-C#환경(.net)에서 사용할수있는 HtmlAgilityPack을 활용하여 Web에서 Html데이터 받아오는 코드.
Requirements.
-HtmlAgilityPack Library
: VS 내의 NuGet Pakage Manager를 통해 설치할수 있다.
Code.
class HtmlLoader { public enum State { Working, End } string mURL; HtmlDocument mDocument; State mState; Action mCallback; Encoding mEncoding; public HtmlLoader(string url, Encoding enc , Action callback) { this.mURL = url; this.mState = State.End; this.mCallback = callback; this.mEncoding = enc; } //새로운 스레드를 생성하여 실행. public void LoadWithThread() { if (mState == State.Working) return; Thread thraed = new Thread(new ThreadStart(LoadHtml)); thraed.Start(); } //호출한 스레드상에서 바로 실행. public void Load() { if (mState == State.Working) return; LoadHtml(); } void LoadHtml() { mState = State.Working; mDocument = new HtmlDocument(); HtmlWeb website = new HtmlWeb(); StreamReader reader = new StreamReader(WebRequest.Create(mURL).GetResponse().GetResponseStream(), mEncoding); mDocument.Load(reader); mCallback(); mState = State.End; } public HtmlDocument _Document { get { return mDocument; } } }
Use.
string url = textBox1.Text; loader = new HtmlLoader(url, Encoding.GetEncoding("euc-kr"), new Action(() => System.IO.File.WriteAllText("web.txt", loader._Document.DocumentNode.InnerText) )); loader.LoadWithThread();
이후 생성되는 web.txt파일을 확인할수있다.
0 개의 댓글:
댓글 쓰기