Html Agility Pack ସହିତ ପାର୍ସ କରିବା ପୂର୍ବରୁ ପ୍ରକ୍ସି ମାଧ୍ୟମରେ HTML ଆଣନ୍ତୁ
ପ୍ରକ୍ସି-କନଫିଗର ହୋଇଥିବା HttpClient କୁ Html Agility Pack ସହିତ ଯୋଡ଼ନ୍ତୁ ଏବଂ ନେଟୱାର୍କ ତ୍ରୁଟିଗୁଡ଼ିକୁ HTML ପାର୍ସିଂରୁ ଅଲଗା ରଖନ୍ତୁ।
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);ଏହି ଆଧୁନିକ .NET ଅଂଶ System.Net ଏବଂ System.Net.Http ବ୍ୟବହାର କରେ। କନଫିଗର ହୋଇଥିବା କ୍ଲାଏଣ୍ଟ ନେଟୱାର୍କ ରାଉଟିଂ ପରିଚାଳନା କରେ, ଏବଂ Html Agility Pack ଫେରାଇ ଦିଆଯାଇଥିବା HTML ଷ୍ଟ୍ରିଂ ଗ୍ରହଣ କରେ। ପ୍ରତ୍ୟେକ ପୃଷ୍ଠା ପାଇଁ ଏହାର ପୁଲ ପୁନଃ ନିର୍ମାଣ ନକରି ଚାଲୁଥିବା କାମ ପାଇଁ ଉପଯୁକ୍ତ ଭାବରେ କନଫିଗର ହୋଇଥିବା କ୍ଲାଏଣ୍ଟ ରଖନ୍ତୁ।
ଏହି ସାର୍ବଜନୀନ ପୃଷ୍ଠାର ଉଦାହରଣ ପାଇଁ, HTTP ପ୍ରକ୍ସି ତାଲିକାରୁ ଏକ ଅପ୍ରମାଣିତ ପ୍ରାର୍ଥୀ ମଧ୍ୟସ୍ଥକୁ ବଦଳାଇ ପାରିବ। ଗନ୍ତବ୍ୟକୁ ଅଲଗା ଭାବରେ ବଦଳାନ୍ତୁ। ୱେବସାଇଟ URL ଏହାର TLS ପରିଚୟ ବଜାୟ ରଖେ। ପ୍ରମାଣିତ ପ୍ରକ୍ସି କ୍ରେଡେନସିଆଲ WebProxy ଉପରେ ଥାଏ; ନ ୱେବସାଇଟ କ୍ରେଡେନସିଆଲ ନ ଅକ୍ଷମ ଯାଞ୍ଚ ଏହାକୁ ବଦଳାଏ।
GetStringAsync ଅସଫଳ HTTP ସ୍ଥିତିକୁ ତ୍ରୁଟି ଭାବରେ ଗ୍ରହଣ କରେ। ବିଫଳ ଡାଉନଲୋଡକୁ ଖାଲି HtmlDocument କୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ ନାହିଁ। ଯଦି ଆପ୍ଲିକେସନକୁ ହେଡର, ସ୍ଥିତି ବିବରଣୀ କିମ୍ବା ତ୍ରୁଟି ବଡି ଆବଶ୍ୟକ, ତେବେ ପ୍ରତିକ୍ରିୟା-ମୁଖୀ HTTP କାର୍ଯ୍ୟ ବ୍ୟବହାର କରନ୍ତୁ ଏବଂ ପାର୍ସ କରିବା ପୂର୍ବରୁ ଏହା ଯାଞ୍ଚ କରନ୍ତୁ।
ଷ୍ଟ୍ରିଂ ପଦ୍ଧତି କଞ୍ଚା ବାଇଟର ଅଶର୍ତ୍ତୀୟ ଅତିରିକ୍ତ UTF-8 ରୂପାନ୍ତରଣକୁ ଏଡ଼ାଏ। ଯଦି ଆପଣ ଉଦ୍ଦେଶ୍ୟମୂଳକ ଭାବରେ ବାଇଟ ଆଣନ୍ତି, ତେବେ ପ୍ରତିକ୍ରିୟା ଏବଂ ଡକୁମେଣ୍ଟର ଏନକୋଡିଂ ଆବଶ୍ୟକତାକୁ ଡିକୋଡିଂକୁ ନେଇଯାଆନ୍ତୁ।
LoadHtml ପାର୍ସ ହୋଇଥିବା ଡକୁମେଣ୍ଟ ଉତ୍ପାଦନ କରେ; ଏହା ସ୍କ୍ରିପ୍ଟ ଚଲାଏ ନାହିଁ, ଷ୍ଟାଇଲ ଲୋଡ କରେ ନାହିଁ କିମ୍ବା ଲିଙ୍କ ଅନୁସରଣ କରେ ନାହିଁ। ପରବର୍ତ୍ତୀ ସାପେକ୍ଷ ଲିଙ୍କଗୁଡ଼ିକୁ ପ୍ରତିକ୍ରିୟାର ସ୍ଥାନ ସହିତ ସମାଧାନ କରନ୍ତୁ, ଏବଂ ମନେ ରଖନ୍ତୁ ଯେ ବ୍ରାଉଜର ଦ୍ୱାରା ରେଣ୍ଡର ହୋଇଥିବା ଉପାଦାନ ଡାଉନଲୋଡ ହୋଇଥିବା ଉତ୍ସରେ ନ ଥାଇପାରେ। ଅନୁରୋଧଗୁଡ଼ିକ ଏକ ସମାନ କନଫିଗର ହୋଇଥିବା HTTP କ୍ଲାଏଣ୍ଟ ସେୟାର କରିଥିଲେ ମଧ୍ୟ ପ୍ରତ୍ୟେକ ପ୍ରତିକ୍ରିୟା ନିଜର ଡକୁମେଣ୍ଟ ଉତ୍ପାଦନ କରିବା ଉଚିତ।