Working with Microsoft.mshtml in c#
ניתוח קוד html ב - #C באפליקציית Console Application
קבלתי משימה - נתנו לי כתובת דף אינטרנט המציג תוצאות חיפוש לפי פרמטרים, השאילתא מחזירה כ - 86 דפים ובכל דף 10 תוצאות (סך הכול 860 תוצאות), מה שהייתי צריך לעשות זה:
1. לגלוש לאתר מקוד
2. לנתח את התוצאות
3. להוציא אותם לאקסל.
לגלוש לאתר מקוד זה מאוד פשוט:
private string GetHtml(string url)
{
WebClient client = new WebClient();
string str = client.DownloadString(url);
return str;
}
להוציא את התוצאות לאקסל, זה גם לא נורא (אני אראה את זה בפוסט עתידי)
הבעייה הייתה לנתח את התוצאות, אופצייה אחת היא לעשות מניפולציות על המחרוזת וזה די ברור שאני לא ממש רוצה לעשות את זה, האופצייה השנייה היא לעבוד עם Microsoft.mshtml שזה dll שאפשר לכתוב איתו (כמעט) דפדפן, למעשה הפקד web browser ב - win form משתמש מאחורי הקלעים עם ה - dll הזה,
נכתוב קוד כזה:
private HTMLDocumentClass GetDocument(string url)
{
var docClass = new HTMLDocumentClass();
IHTMLDocument2 iDoc = (IHTMLDocument2)docClass;
object html = GetHtml(url);
iDoc.write(html);
return docClass;
}
כעת אפשר להתחיל לנתח את התוצאות, למשל אפשר לכתוב קוד כזה:
var doc = GetDocument(GetUrl(1));
var header = (HTMLHeaderElementClass)doc.getElementById("h1ElementId");
string hedaerText = header.innerText;