Hent HTML gjennom en proxy før du parser med Html Agility Pack
Kombiner en proxykonfigurert HttpClient med Html Agility Pack og hold nettverksfeil atskilt fra HTML-parsing.
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);Dette moderne .NET-utdraget bruker System.Net og System.Net.Http. Den konfigurerte klienten styrer nettverksruting, og Html Agility Pack mottar HTML-strengen som returneres. Behold en riktig konfigurert klient for løpende arbeid i stedet for å bygge opp igjen bassengene dens for hver side.
For dette eksempelet med en offentlig side kan en uautentisert kandidat fra HTTP-proxylisten erstatte mellomleddet. Bytt ut destinasjonen separat. Nettstedets URL beholder sin TLS-identitet. Autentiserte proxy-legitimasjoner hører til på WebProxy; verken nettstedets legitimasjon eller deaktivert verifisering erstatter dem.
GetStringAsync behandler HTTP-statuser uten suksess som feil. Ikke konverter en mislykket nedlasting til et tomt HtmlDocument. Hvis programmet trenger headere, statusdetaljer eller en feiltekst, bruk en responsorientert HTTP-operasjon og undersøk den før parsing.
Strengmetoden unngår en ubetinget ekstra UTF-8-konvertering av rå byte. Hvis du bevisst henter byte, før kravene til svar- og dokumentkoding videre til dekodingen.
LoadHtml produserer et parset dokument; det kjører ikke skript, laster ikke stiler og følger ikke lenker. Løs påfølgende relative lenker mot svarets plassering, og husk at elementer som nettleseren rendrer kan mangle i den nedlastede kilden. Hvert svar bør produsere sitt eget dokument selv når forespørsler deler den samme konfigurerte HTTP-klienten.