Html Agility Pack bilan tahlil qilishdan oldin HTML ni proksi orqali olish
Proksi bilan sozlangan HttpClient ni Html Agility Pack bilan birlashtiring va tarmoq xatolarini HTML tahlilidan alohida saqlang.
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);Ushbu zamonaviy .NET bo'lagi System.Net va System.Net.Http dan foydalanadi. Sozlangan mijoz tarmoq marshrutlashini boshqaradi, Html Agility Pack esa qaytarilgan HTML satrini oladi. Har bir sahifa uchun uning hovuzlarini qayta qurish o'rniga doimiy ish uchun to'g'ri sozlangan mijozni saqlang.
Ushbu ommaviy sahifa misoli uchun HTTP proksilar ro'yxatidan autentifikatsiyadan o'tmagan nomzod vositachini almashtirishi mumkin. Manzilni alohida almashtiring. Veb-sayt URL manzili o'zining TLS identifikatorini saqlaydi. Autentifikatsiya qilingan proksi hisob ma'lumotlari WebProxy ga tegishli; ularni na veb-sayt hisob ma'lumotlari, na o'chirilgan tekshiruv almashtiradi.
GetStringAsync muvaffaqiyatsiz HTTP holatlarini xato deb hisoblaydi. Muvaffaqiyatsiz yuklab olishni bo'sh HtmlDocument ga aylantirmang. Agar ilovaga sarlavhalar, holat tafsilotlari yoki xato tanasi kerak bo'lsa, javobga yo'naltirilgan HTTP amalini ishlatib, tahlildan oldin tekshiring.
Satr usuli xom baytlarning shartsiz qo'shimcha UTF-8 konvertatsiyasidan qochadi. Agar baytlarni ataylab olsangiz, javob va hujjat kodlash talablarini dekodlashga o'tkazing.
LoadHtml tahlil qilingan hujjat yaratadi; u skriptlarni ishga tushirmaydi, uslublarni yuklamaydi va havolalarga ergashmaydi. Keyingi nisbiy havolalarni javobning joylashuviga nisbatan hal qiling va brauzer ko'rsatadigan elementlar yuklab olingan manbada bo'lmasligi mumkinligini yodda tuting. So'rovlar bir xil sozlangan HTTP mijozini bo'lishsa ham, har bir javob o'z hujjatini yaratishi kerak.