Dohvatite HTML kroz proxy prije parsiranja pomoću Html Agility Pack
Kombinirajte HttpClient konfiguriran kroz proxy s Html Agility Pack uz odvajanje mrežnih grešaka od HTML parsiranja.
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);Ovaj moderni .NET fragment koristi System.Net i System.Net.Http. Konfigurirani klijent upravlja mrežnim usmjeravanjem, a Html Agility Pack prima vraćeni HTML string. Zadržite prikladno konfiguriran klijent za tekući rad umjesto ponovne izgradnje njegovih bazena za svaku stranicu.
Za ovaj primjer javne stranice, neautentificirani kandidat s liste HTTP proxyja može zamijeniti posrednika. Zamijenite odredište odvojeno. URL web stranice zadržava svoj TLS identitet. Autentificirani proxy podaci pripadaju WebProxyju; ni podaci web stranice ni onemogućena provjera ne zamjenjuju ih.
GetStringAsync tretira neuspješne HTTP statuse kao greške. Ne pretvarajte neuspjelo preuzimanje u prazan HtmlDocument. Ako aplikaciji trebaju zaglavlja, detalji statusa ili tijelo greške, koristite HTTP operaciju usmjerenu na odgovor i pregledajte je prije parsiranja.
Metoda stringa izbjegava bezuvjetnu dodatnu UTF-8 konverziju sirovih bajtova. Ako namjerno dohvaćate bajtove, prenesite zahtjeve za kodiranjem odgovora i dokumenta u dekodiranje.
LoadHtml proizvodi parsirani dokument; ne izvršava skripte, ne učitava stilove niti slijedi linkove. Razriješite naknadne relativne linkove prema lokaciji odgovora i zapamtite da elementi koje prikazuje preglednik mogu izostati iz preuzetog izvora. Svaki odgovor treba proizvesti vlastiti dokument čak i kada zahtjevi dijele isti konfigurirani HTTP klijent.