Html Agility Pack ဖြင့် ပိုင်းခြားမစစ်ဆေးမီ ပရောက်စီမှတစ်ဆင့် HTML ကို ရယူခြင်း
ပရောက်စီဖြင့် ပြင်ဆင်ထားသော HttpClient ကို Html Agility Pack နှင့် ပေါင်းစပ်ပြီး ကွန်ရက်အမှားများကို HTML ပိုင်းခြားစစ်ဆေးမှုနှင့် ခွဲခြားထားပါ။
using var handler = new HttpClientHandler
{
UseProxy = true,
Proxy = new WebProxy("http://proxy.example:8080")
};
using var client = new HttpClient(handler);
string html = await client.GetStringAsync(
"https://www.example.com/catalog");
var document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(html);ဤခေတ်သစ် .NET အပိုင်းအစသည် System.Net နှင့် System.Net.Http ကို အသုံးပြုသည်။ ပြင်ဆင်ထားသော client သည် ကွန်ရက်လမ်းကြောင်းကို စီမံပြီး Html Agility Pack သည် ပြန်လာသော HTML စာကြောင်းကို လက်ခံရယူသည်။ စာမျက်နှာတိုင်းအတွက် ၎င်း၏ pool များကို ပြန်လည်တည်ဆောက်မည့်အစား ဆက်လက်လုပ်ဆောင်ရန် သင့်လျော်စွာ ပြင်ဆင်ထားသော client ကို ထိန်းထားပါ။
ဤအများပြည်သူစာမျက်နှာ ဥပမာအတွက် HTTP ပရောက်စီစာရင်းမှ အတည်ပြုမထားသော ကိုယ်စားလှယ်လောင်းတစ်ဦးသည် ကြားခံကို အစားထိုးနိုင်သည်။ ဆိုက်ညွှန်ပြချက်ကို သီးခြား အစားထိုးပါ။ ဝဘ်ဆိုက် URL သည် ၎င်း၏ TLS အထောက်အထားကို ထိန်းသိမ်းထားသည်။ အတည်ပြုထားသော ပရောက်စီ အထောက်အထားများသည် WebProxy တွင် ရှိသည်; ဝဘ်ဆိုက်အထောက်အထားများဖြစ်စေ၊ ပိတ်ထားသော အတည်ပြုစစ်ဆေးမှုဖြစ်စေ ၎င်းတို့ကို အစားထိုးမပေးပါ။
GetStringAsync သည် မအောင်မြင်သော HTTP အခြေအနေများကို အမှားအဖြစ် သတ်မှတ်သည်။ မအောင်မြင်သော ဒေါင်းလုဒ်ကို HtmlDocument အလွတ်အဖြစ် မပြောင်းလဲပါနှင့်။ အပလီကေးရှင်းသည် header များ၊ အခြေအနေအသေးစိတ် သို့မဟုတ် အမှားကိုယ်ထည် လိုအပ်ပါက တုံ့ပြန်မှုကို ဦးတည်သော HTTP လုပ်ဆောင်ချက်ကို အသုံးပြုပြီး မခွဲခြမ်းမီ စစ်ဆေးပါ။
စာကြောင်းနည်းလမ်းသည် ကုန်ကြမ်း byte များကို ခြွင်းချက်မရှိ ထပ်ဆောင်း UTF-8 ပြောင်းလဲခြင်းကို ရှောင်ရှားသည်။ byte များကို တမင်ရယူပါက တုံ့ပြန်မှုနှင့် စာရွက်စာတမ်း ကုဒ်ပြောင်းလဲမှု လိုအပ်ချက်များကို ကုဒ်ဖျက်ခြင်းသို့ သယ်ဆောင်ပါ။
LoadHtml သည် ခွဲခြမ်းစိတ်ဖြာထားသော စာရွက်စာတမ်းကို ထုတ်လုပ်သည်; ၎င်းသည် script များကို မလုပ်ဆောင်ပါ၊ style များကို မတင်ပါ၊ လင့်ခ်များကို မလိုက်ပါ။ နောက်ဆက်တွဲ နှိုင်းရလင့်ခ်များကို တုံ့ပြန်မှု၏ တည်နေရာနှင့် ဆက်စပ်၍ ဖြေရှင်းပါ၊ ဘရောက်ဇာက ဖော်ပြသော အစိတ်အပိုင်းများသည် ဒေါင်းလုဒ်လုပ်ထားသော ရင်းမြစ်တွင် မပါဝင်နိုင်ကြောင်း သတိရပါ။ တောင်းဆိုမှုများသည် တူညီသော ပြင်ဆင်ထားသည့် HTTP client ကို မျှဝေသုံးစွဲသည့်တိုင် တုံ့ပြန်မှုတိုင်းသည် ၎င်း၏ ကိုယ်ပိုင်စာရွက်စာတမ်းကို ထုတ်လုပ်သင့်သည်။