HTML ophalen via een proxy voordat je het parseert met Html Agility Pack
Combineer een met proxy geconfigureerde HttpClient met Html Agility Pack en houd netwerkfouten gescheiden van HTML-parsing.
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);Dit moderne .NET-fragment gebruikt System.Net en System.Net.Http. De geconfigureerde client regelt de netwerkroutering en Html Agility Pack ontvangt de teruggegeven HTML-tekenreeks. Houd een goed geconfigureerde client aan voor doorlopend werk in plaats van de pools ervan voor elke pagina opnieuw op te bouwen.
Voor dit voorbeeld van een openbare pagina kan een niet-geverifieerde kandidaat uit de HTTP-proxylijst de tussenpartij vervangen. Vervang de bestemming afzonderlijk. De website-URL behoudt zijn TLS-identiteit. Geauthenticeerde proxyreferenties horen bij WebProxy; noch websitereferenties noch uitgeschakelde verificatie vervangen ze.
GetStringAsync behandelt niet-succesvolle HTTP-statussen als fouten. Zet een mislukte download niet om in een leeg HtmlDocument. Als de toepassing headers, statusdetails of een foutbody nodig heeft, gebruik dan een responsgerichte HTTP-bewerking en inspecteer die vóór het parseren.
De tekenreeksmethode vermijdt een onvoorwaardelijke extra UTF-8-conversie van onbewerkte bytes. Als je bewust bytes ophaalt, draag dan de coderingsvereisten van de respons en het document over naar het decoderen.
LoadHtml produceert een geparseerd document; het voert geen scripts uit, laadt geen stijlen en volgt geen links. Los volgende relatieve links op ten opzichte van de locatie van de respons, en onthoud dat door de browser gerenderde elementen kunnen ontbreken in de gedownloade bron. Elke respons zou zijn eigen document moeten opleveren, zelfs wanneer verzoeken dezelfde geconfigureerde HTTP-client delen.