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 клиентти бөлүшсө да, ар бир жооп өз документин түзүшү керек.

Тектеш макалалар