HTML-i toomine puhverserveri kaudu enne Html Agility Packiga sõelumist
Ühendage puhverserveri kaudu seadistatud HttpClient Html Agility Packiga, hoides võrguvead HTML-i sõelumisest eraldi.
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);See kaasaegne .NET-i katkend kasutab System.Net ja System.Net.Http. Seadistatud klient haldab võrgu marsruutimist ja Html Agility Pack saab tagastatud HTML-stringi. Hoidke jooksva töö jaoks sobivalt seadistatud klienti, selle asemel et iga lehe jaoks selle basseine uuesti luua.
Selle avaliku lehe näite puhul võib autentimata kandidaat HTTP-puhverserverite loendist vahendaja asendada. Asendage sihtkoht eraldi. Veebisaidi URL säilitab oma TLS-identiteedi. Autenditud puhverserveri mandaadid kuuluvad WebProxy juurde; ei veebisaidi mandaadid ega väljalülitatud kontroll asenda neid.
GetStringAsync käsitleb ebaõnnestunud HTTP olekuid vigadena. Ärge muutke ebaõnnestunud allalaadimist tühjaks HtmlDocument-iks. Kui rakendus vajab päiseid, oleku üksikasju või veakeha, kasutage vastusele orienteeritud HTTP-toimingut ja kontrollige seda enne sõelumist.
Stringimeetod väldib toorbaite tingimusteta täiendavat UTF-8 teisendamist. Kui toote baite teadlikult, kandke vastuse ja dokumendi kodeerimise nõuded dekodeerimisse.
LoadHtml loob sõelutud dokumendi; see ei käivita skripte, ei laadi stiile ega järgi linke. Lahendage järgnevad suhtelised lingid vastuse asukoha suhtes ja pidage meeles, et brauseri renderdatud elemendid võivad allalaaditud lähtekoodist puududa. Iga vastus peaks looma oma dokumendi ka siis, kui päringud jagavad sama seadistatud HTTP-klienti.