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 қолданады. Конфигурацияланған клиент желілік маршруттауды басқарады, ал Html Agility Pack қайтарылған HTML жолын алады. Әрбір бет үшін оның пулдарын қайта құрудың орнына үздіксіз жұмыс үшін тиісті конфигурацияланған клиентті сақтаңыз.

Осы жалпыға ортақ бет мысалы үшін HTTP прокси тізімінен аутентификацияланбаған кандидат делдалды ауыстыра алады. Межелі жерді бөлек ауыстырыңыз. Веб-сайт URL мекенжайы өзінің TLS сәйкестігін сақтайды. Аутентификацияланған прокси тіркелгі деректері WebProxy-ге жатады; оларды веб-сайт тіркелгі деректері де, өшірілген тексеру де алмастырмайды.

GetStringAsync сәтсіз HTTP мәртебелерін қате ретінде қарастырады. Сәтсіз жүктеуді бос HtmlDocument-ке айналдырмаңыз. Егер қолданбаға тақырыптар, мәртебе мәліметтері немесе қате денесі қажет болса, жауапқа бағытталған HTTP операциясын пайдаланып, талдау алдында оны тексеріңіз.

Жол әдісі шикі байттардың шартсыз қосымша UTF-8 түрлендіруін болдырмайды. Егер байттарды әдейі алатын болсаңыз, жауап пен құжаттың кодтау талаптарын декодтауға өткізіңіз.

LoadHtml талданған құжат жасайды; ол скрипттерді орындамайды, стильдерді жүктемейді және сілтемелерді бақыламайды. Кейінгі салыстырмалы сілтемелерді жауаптың орналасуына қатысты шешіңіз және браузер көрсететін элементтер жүктелген дереккөзде жоқ болуы мүмкін екенін ұмытпаңыз. Сұраулар бір конфигурацияланған HTTP клиентті бөліссе де, әрбір жауап өз құжатын жасауы керек.

Қатысты мақалалар