Stáhněte HTML přes proxy před parsováním pomocí Html Agility Pack
Zkombinujte HttpClient nakonfigurovaný přes proxy s Html Agility Pack a oddělte síťové chyby od parsování HTML.
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);Tento moderní fragment .NET používá System.Net a System.Net.Http. Nakonfigurovaný klient řídí síťové směrování a Html Agility Pack dostává vrácený HTML řetězec. Pro průběžnou práci si ponechte vhodně nakonfigurovaného klienta, místo abyste jeho fondy pro každou stránku znovu vytvářeli.
Pro tento příklad veřejné stránky může neautentizovaný kandidát ze seznamu HTTP proxy nahradit prostředníka. Cíl nahraďte zvlášť. URL webu si zachovává svou identitu TLS. Ověřené přihlašovací údaje k proxy patří do WebProxy; nenahrazují je ani údaje webu, ani vypnuté ověřování.
GetStringAsync považuje neúspěšné stavové kódy HTTP za chyby. Nepřevádějte neúspěšné stažení na prázdný HtmlDocument. Pokud aplikace potřebuje hlavičky, podrobnosti stavu nebo tělo chyby, použijte HTTP operaci orientovanou na odpověď a před parsováním ji prozkoumejte.
Řetězcová metoda se vyhýbá bezpodmínečné dodatečné konverzi surových bajtů do UTF-8. Pokud bajty stahujete záměrně, přeneste požadavky na kódování odpovědi a dokumentu do dekódování.
LoadHtml vytváří parsovaný dokument; nespouští skripty, nenačítá styly ani nenásleduje odkazy. Následné relativní odkazy řešte vůči umístění odpovědi a pamatujte, že prvky vykreslené prohlížečem mohou ve staženém zdroji chybět. Každá odpověď by měla vytvořit vlastní dokument, i když požadavky sdílejí stejného nakonfigurovaného HTTP klienta.