Haal HTML deur 'n proxy voordat jy dit met Html Agility Pack ontleed
Kombineer 'n proxy-gekonfigureerde HttpClient met Html Agility Pack en hou netwerkfoute apart van HTML-ontleding.
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);Hierdie moderne .NET-fragment gebruik System.Net en System.Net.Http. Die gekonfigureerde kliënt beheer netwerkroetering, en Html Agility Pack ontvang die teruggekeerde HTML-string. Hou 'n gepas gekonfigureerde kliënt vir deurlopende werk eerder as om sy poele vir elke bladsy te herbou.
Vir hierdie voorbeeld van 'n openbare bladsy kan 'n ongeverifieerde kandidaat uit die HTTP-proxylys die tussenparty vervang. Vervang die bestemming afsonderlik. Die webwerf-URL behou sy TLS-identiteit. Geverifieerde proxybewyse hoort op WebProxy; nóg webwerfbewyse nóg gedeaktiveerde verifikasie vervang dit.
GetStringAsync behandel HTTP-statusse wat nie sukses is nie as foute. Moenie 'n mislukte aflaai in 'n leë HtmlDocument omskep nie. As die toepassing koptekste, statusbesonderhede of 'n foutliggaam nodig het, gebruik 'n responsgeoriënteerde HTTP-bewerking en ondersoek dit voor ontleding.
Die stringmetode vermy 'n onvoorwaardelike ekstra UTF-8-omskakeling van rou grepe. As jy grepe doelbewus haal, dra die vereistes vir respons- en dokumentkodering na die dekodering oor.
LoadHtml produseer 'n ontlede dokument; dit voer nie skrifte uit nie, laai nie style nie en volg nie skakels nie. Los daaropvolgende relatiewe skakels teen die respons se ligging op, en onthou dat elemente wat die blaaier weergee in die afgelaaide bron kan ontbreek. Elke respons moet sy eie dokument produseer, selfs wanneer versoeke dieselfde gekonfigureerde HTTP-kliënt deel.