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 क्लाइन्ट साझा गरे पनि प्रत्येक प्रतिक्रियाले आफ्नै कागजात उत्पादन गर्नुपर्छ।