Obțineți HTML prin intermediul unui proxy înainte de a-l analiza cu Html Agility Pack
Combinați un HttpClient configurat cu proxy cu Html Agility Pack, păstrând erorile de rețea separate de analiza 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);Acest fragment .NET modern folosește System.Net și System.Net.Http. Clientul configurat gestionează rutarea rețelei, iar Html Agility Pack primește șirul HTML returnat. Păstrați un client configurat corespunzător pentru lucrul continuu în loc să reconstruiți pool-urile acestuia pentru fiecare pagină.
Pentru acest exemplu de pagină publică, un candidat neautentificat din lista de proxy HTTP poate înlocui intermediarul. Înlocuiți destinația separat. URL-ul site-ului își păstrează identitatea TLS. Acreditările de proxy autentificate aparțin WebProxy; nici acreditările site-ului, nici verificarea dezactivată nu le înlocuiesc.
GetStringAsync tratează stările HTTP fără succes ca erori. Nu transformați o descărcare eșuată într-un HtmlDocument gol. Dacă aplicația are nevoie de anteturi, detalii despre stare sau un corp de eroare, utilizați o operațiune HTTP orientată spre răspuns și inspectați-o înainte de analiză.
Metoda șirului evită o conversie suplimentară necondiționată la UTF-8 a octeților brute. Dacă preluați octeți în mod deliberat, transferați cerințele de codificare ale răspunsului și documentului în decodare.
LoadHtml produce un document analizat; nu execută scripturi, nu încarcă stiluri și nu urmărește linkuri. Rezolvați linkurile relative ulterioare față de locația răspunsului și rețineți că elementele randate de browser pot lipsi din sursa descărcată. Fiecare răspuns ar trebui să producă propriul document chiar și atunci când cererile partajează același client HTTP configurat.