HTML lekérése proxyn keresztül a Html Agility Packkel való elemzés előtt
Kombináljon egy proxyval beállított HttpClientet a Html Agility Packkel, és tartsa külön a hálózati hibákat a HTML-elemzéstől.
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);Ez a modern .NET-töredék a System.Net és a System.Net.Http névtereket használja. A beállított ügyfél végzi a hálózati útválasztást, a Html Agility Pack pedig megkapja a visszaadott HTML-karakterláncot. Tartson fenn megfelelően beállított ügyfelet a folyamatos munkához ahelyett, hogy minden oldalhoz újraépítené a készleteit.
Ehhez a nyilvános oldalhoz tartozó példához egy hitelesítetlen jelölt az HTTP-proxy listáról helyettesítheti a közvetítőt. A célt külön cserélje ki. A webhely URL-je megőrzi TLS-identitását. A hitelesített proxy-hitelesítő adatok a WebProxyhoz tartoznak; sem a webhely hitelesítő adatai, sem a letiltott ellenőrzés nem helyettesíti őket.
A GetStringAsync a sikertelen HTTP-állapotokat hibaként kezeli. Ne alakítson egy sikertelen letöltést üres HtmlDocumentté. Ha az alkalmazásnak fejlécekre, állapotrészletekre vagy hibatestre van szüksége, használjon válaszorientált HTTP-műveletet, és az elemzés előtt vizsgálja meg.
A karakterlánc-metódus elkerüli a nyers bájtok feltétel nélküli további UTF-8-konverzióját. Ha szándékosan bájtokat kér le, vigye át a válasz és a dokumentum kódolási követelményeit a dekódolásba.
A LoadHtml elemzett dokumentumot állít elő; nem futtat szkripteket, nem tölt be stíluslapokat és nem követ hivatkozásokat. Oldja fel a további relatív hivatkozásokat a válasz helyéhez viszonyítva, és ne feledje, hogy a böngésző által megjelenített elemek hiányozhatnak a letöltött forrásból. Minden válasznak saját dokumentumot kell előállítania akkor is, ha a kérések ugyanazt a beállított HTTP-ügyfelet használják.