Hent HTML gennem en proxy, før du parser med Html Agility Pack
Kombinér en proxykonfigureret HttpClient med Html Agility Pack, og hold netværksfejl adskilt fra 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);Dette moderne .NET-uddrag bruger System.Net og System.Net.Http. Den konfigurerede klient styrer netværksrouting, og Html Agility Pack modtager den returnerede HTML-streng. Behold en passende konfigureret klient til løbende arbejde i stedet for at genopbygge dens puljer for hver side.
Til dette eksempel med en offentlig side kan en uautentificeret kandidat fra HTTP-proxylisten erstatte mellemleddet. Udskift destinationen separat. Webstedets URL bevarer sin TLS-identitet. Autentificerede proxyoplysninger hører til på WebProxy; hverken webstedets oplysninger eller deaktiveret verifikation erstatter dem.
GetStringAsync behandler HTTP-statusser uden succes som fejl. Konverter ikke en mislykket download til et tomt HtmlDocument. Hvis programmet har brug for headere, statusdetaljer eller en fejltekst, så brug en responsorienteret HTTP-handling og undersøg den, før du parser.
Strengmetoden undgår en ubetinget ekstra UTF-8-konvertering af rå bytes. Hvis du bevidst henter bytes, så før kravene til svar- og dokumentkodning videre til afkodningen.
LoadHtml producerer et parset dokument; det kører ikke scripts, indlæser ikke styles og følger ikke links. Løs efterfølgende relative links i forhold til svarets placering, og husk, at browserrenderede elementer kan mangle i den downloadede kilde. Hvert svar bør producere sit eget dokument, selv når anmodninger deler den samme konfigurerede HTTP-klient.