Hämta HTML via en proxy innan du tolkar med Html Agility Pack
Kombinera en proxykonfigurerad HttpClient med Html Agility Pack och håll nätverksfel åtskilda från HTML-tolkning.
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);Detta moderna .NET-utdrag använder System.Net och System.Net.Http. Den konfigurerade klienten hanterar nätverksdirigering och Html Agility Pack tar emot den returnerade HTML-strängen. Behåll en lämpligt konfigurerad klient för löpande arbete i stället för att bygga om dess pooler för varje sida.
För det här exemplet med en offentlig sida kan en oautentiserad kandidat från HTTP-proxylistan ersätta mellanhanden. Byt ut målet separat. Webbplatsens URL behåller sin TLS-identitet. Autentiserade proxyuppgifter hör till på WebProxy; varken webbplatsens uppgifter eller inaktiverad verifiering ersätter dem.
GetStringAsync behandlar HTTP-statusar utan framgång som fel. Konvertera inte en misslyckad nedladdning till ett tomt HtmlDocument. Om programmet behöver huvuden, statusinformation eller en felkropp, använd en svarsorienterad HTTP-åtgärd och granska den före tolkning.
Strängmetoden undviker en ovillkorlig extra UTF-8-konvertering av råa byte. Om du medvetet hämtar byte, för över kraven på svars- och dokumentkodning till avkodningen.
LoadHtml producerar ett tolkat dokument; det kör inga skript, laddar inga stilar och följer inga länkar. Lös efterföljande relativa länkar mot svarets placering och kom ihåg att element som webbläsaren renderar kan saknas i den nedladdade källan. Varje svar bör producera sitt eget dokument även när förfrågningar delar samma konfigurerade HTTP-klient.