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);

Šis modernais .NET fragments izmanto System.Net un System.Net.Http. Konfigurētais klients pārvalda tīkla maršrutēšanu, un Html Agility Pack saņem atgriezto HTML virkni. Saglabājiet atbilstoši konfigurētu klientu pastāvīgam darbam, nevis katrai lapai no jauna veidojiet tā pūlus.

Šajā publiskās lapas piemērā neautentificēts kandidāts no HTTP starpniekserveru saraksta var aizstāt starpnieku. Aizstājiet galamērķi atsevišķi. Vietnes URL saglabā savu TLS identitāti. Autentificētie starpniekservera datu akreditācijas dati pieder WebProxy; tos neaizstāj ne vietnes dati, ne atspējota pārbaude.

GetStringAsync neveiksmīgus HTTP statusus uzskata par kļūdām. Nepārvērsiet neizdevušos lejupielādi tukšā HtmlDocument. Ja lietojumprogrammai nepieciešami galvenes, statusa informācija vai kļūdas pamatteksts, izmantojiet uz atbildi orientētu HTTP darbību un pārbaudiet to pirms parsēšanas.

Virknes metode izvairās no beznosacījuma papildu neapstrādātu baitu pārveides uz UTF-8. Ja apzināti iegūstat baitus, pārnesiet atbildes un dokumenta kodējuma prasības uz dekodēšanu.

LoadHtml izveido parsētu dokumentu; tas neizpilda skriptus, neielādē stilus un neseko saitēm. Atrisiniet turpmākās relatīvās saites attiecībā pret atbildes atrašanās vietu un atcerieties, ka pārlūkā attēlotie elementi var trūkt lejupielādētajā avotā. Katrai atbildei būtu jāizveido savs dokuments arī tad, ja pieprasījumi izmanto vienu un to pašu konfigurēto HTTP klientu.

Saistītie raksti