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žíva System.Net a System.Net.Http. Nakonfigurovaný klient riadi sieťové smerovanie a Html Agility Pack dostáva vrátený HTML reťazec. Pre priebežnú prácu si ponechajte vhodne nakonfigurovaného klienta, namiesto opätovného vytvárania jeho fondov pre každú stránku.

Pre tento príklad verejnej stránky môže neautentizovaný kandidát zo zoznamu HTTP proxy nahradiť sprostredkovateľa. Cieľ nahraďte samostatne. URL webu si zachováva svoju identitu TLS. Overené prihlasovacie údaje k proxy patria do WebProxy; nenahrádzajú ich ani údaje webu, ani vypnuté overovanie.

GetStringAsync považuje neúspešné stavové kódy HTTP za chyby. Neprevádzajte neúspešné stiahnutie na prázdny HtmlDocument. Ak aplikácia potrebuje hlavičky, podrobnosti stavu alebo telo chyby, použite HTTP operáciu orientovanú na odpoveď a pred parsovaním ju preskúmajte.

Reťazcová metóda sa vyhýba bezpodmienečnej dodatočnej konverzii surových bajtov do UTF-8. Ak bajty sťahujete zámerne, preneste požiadavky na kódovanie odpovede a dokumentu do dekódovania.

LoadHtml vytvára parsovaný dokument; nespúšťa skripty, nenačítava štýly ani nenasleduje odkazy. Následné relatívne odkazy riešte voči umiestneniu odpovede a pamätajte, že prvky vykreslené prehliadačom môžu v stiahnutom zdroji chýbať. Každá odpoveď by mala vytvoriť vlastný dokument, aj keď požiadavky zdieľajú toho istého nakonfigurovaného HTTP klienta.

Súvisiace články