-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 개의 댓글:
댓글 쓰기