ดึง HTML ผ่านพร็อกซีก่อนแยกวิเคราะห์ด้วย Html Agility Pack
รวม 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 ที่กำหนดค่าเดียวกัน