Nhận một chuỗi XPath hợp lệ trỏ đến nút này Show
không gian tên. HtmlGói Agility Visual Basic Public ReadOnly Property XPath As String Get Mã tôi đã cung cấp trong bài đăng của mình hoạt động với XML bạn đã đăng. Nó đơn giản hơn nhiều so với tất cả những thứ div mà bạn đang cố thực hiện trong một truy vấn XPath. Nó cũng dễ đọc hơn, dễ điều chỉnh hơn cho các giá trị bị thiếu và có thể dễ bảo trì hơn Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không? Bài viết này là phần thứ hai trong loạt bài của chúng tôi về cách cạo trang web bằng HTML Agility-Pack. Đã xử lý trang bìa và nội dung trong bài viết trước, giờ chúng ta đã sẵn sàng đưa nội dung chính vào. Hãy bắt đầu với Chuyển đến phần Bộ chọn HTMLBộ chọn cho phép bạn chọn nút HTML từ tài liệu HTML Phương thức chọn HTMLSelectNodes(). Thu thập một loạt các nút khớp với biểu thức đường dẫn X. SelectSingleNode(String). Thu thập Nút Xml đầu tiên khớp với biểu thức Đường dẫn X Phương thức SelectNodes Chọn danh sách các nút phù hợp với HtmlAgilityPack. HtmlNút. biểu thức XPath Thông số. xpath(Biểu thức XPath. ) trả lại. Một HtmlAgilityPack. HtmlNodeCollection chứa tập hợp các nút khớp với HtmlAgilityPack. HtmlNút. Truy vấn XPath hoặc null nếu không có nút nào khớp với biểu thức X-Path ví dụ (i) Ví dụ sau chọn nút đầu tiên khớp với biểu thức Đường dẫn X bằng phương thức SelectNodes var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); string name = htmlDoc.DocumentNode.SelectNodes("//td/input").First().Attributes["value"].Value; (ii) Ví dụ sau chọn tất cả các nút phù hợp với biểu thức XPath var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//td/input"); Phương thức SelectSingleNodeChọn HtmlNode đầu tiên phù hợp với HtmlAgilityPack. HtmlNút. biểu thức XPath Thông số. xpath(Biểu thức X-Path. Có thể không có giá trị. ) trả lại. Nút đầu tiên phù hợp với truy vấn X-Path hoặc tham chiếu null nếu không tìm thấy nút phù hợp Ví dụ Ví dụ sau đây chọn nút đầu tiên khớp với biểu thức Đường dẫn X bằng phương thức SelectNodes var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); string name = htmlDoc.DocumentNode.SelectSingleNode("//td/input").Attributes["value"].Value; Thao tác HTMLThao tác cho phép bạn vượt qua nút HTML Thuộc tính thao tác HTMLNội Html. Nhận hoặc Đặt HTML trong thẻ bắt đầu và thẻ kết thúc của đối tượng Văn bản bên trong. Lấy văn bản giữa thẻ bắt đầu và thẻ kết thúc của đối tượng Bên ngoàiHtml. Nhận đối tượng và nội dung của nó trong HTML ParentNode. Nhận hầu hết các nút trên cùng của nút này (đối với các nút có thể có nút cha) Nội Html chuỗi ảo công khai InternalHtml { get; . - Nhận hoặc Đặt HTML giữa thẻ bắt đầu và thẻ kết thúc của đối tượng. InnerHtml là thành viên của HtmlAgilityPack. HtmlNút Ví dụ var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlNodes =htmlDoc.DocumentNode.SelectNodes("//body/h1"); foreach (var node in htmlNodes) { Console.WriteLine(node.InnerHtml); } Văn bản bên trong chuỗi ảo công khai InternalText { get; . - Lấy văn bản giữa thẻ bắt đầu và thẻ kết thúc của đối tượng. InnerText là thành viên của HtmlAgilityPack. HtmlNút Ví dụ var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//body/h1"); foreach (var node in htmlNodes) { Console.WriteLine(node.InnerText); } Bên ngoàiHtml chuỗi ảo công khai OuterHtml { get; . - Nhận đối tượng và nội dung của nó trong HTML. OuterHtml là một thành phần của HtmlAgilityPack. HtmlNút Ví dụ var htmlDoc = new HtmlDocument(); var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//body/h1"); foreach (var node in htmlNodes) { Console.WriteLine(node.OuterHtml); } Phương pháp thao tác HTMLAppendChild(). Kết hợp nút được chỉ định vào cuối danh sách con của nút này Nối thêmTrẻ em(). Hợp nhất nút đã xác định vào cuối danh sách con của nút này Dòng vô tính(). Tạo giống hệt nút Bản saoNode(Boolean). Tạo một nút giống hệt nhau CloneNode(Chuỗi). Tạo một nút giống hệt nhau và sửa đổi tên của nó cùng một lúc CloneNode(Chuỗi, Boolean). Tạo một nút giống hệt nhau và sửa đổi tên của nó cùng một lúc CopyFrom(HtmlNode). Tạo một nút giống hệt nhau và cây con bên dưới nó CopyFrom(HtmlNode, Boolean). Tạo một bản sao của nút TạoNode(). Tạo một nút HTML từ một chuỗi biểu thị HTML bằng chữ Chèn sau(). Chèn nút được liệt kê ngay sau nút tham chiếu được liệt kê Chèn trước. Chèn nút được liệt kê ngay trước nút tham chiếu được liệt kê PrependChild. Thêm nút được liệt kê vào đầu danh sách con của nút này PrependTrẻ em. Hợp nhất danh sách nút được liệt kê vào đầu danh sách con của nút này Di dời. Hủy nút khỏi bộ sưu tập chính Bỏ hết. Loại bỏ tất cả con và/hoặc thuộc tính của nút hiện tại Loại bỏTất cảTrẻ em. Xóa tất cả con của nút hiện tại RemoveChild(HtmlNode). Xóa nút con được liệt kê RemoveChild(HtmlNode, Boolean). Xóa nút con được liệt kê ReplaceChild(). Thay thế nút con oldChild bằng nút newChild Duyệt qua HTMLDuyệt qua cho phép bạn duyệt qua nút HTML Thuộc tính duyệt HTMLnút con. Lấy tất cả con của nút đứa con đầu lòng. Nhận con đầu tiên của nút Con cuối cùng. Lấy con cuối cùng của nút Tiếp theoAnh chị em. Lấy nút ngay sau phần tử này ParentNode. Lấy nút trên của nút này (đối với các nút có thể có cha) nút con Ví dụ using system; using system.xml; using htmlAgelityPack; public class Program { public static void Main() { var [email protected]"<body> <h1>This is<b>bold</b>heading</h1> <p>This is <u>underline</u>paragraph</p> </body>"; var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlBody = htmlDoc.DocumentNode.SelectSingleNodes("//body"); HtmlNodeCollection childNodes = htmlBody.ChildNodes; foreach (var node in childNodes ) { if(node.NodeType == HtmlNodeType.Element) { Console.WriteLine(node.OuterHtml); } } } } đầu ra ________số 8_______đứa con đầu lòng Ví dụ using system; using system.xml; using htmlAgelityPack; public class Program { public static void Main() { var [email protected]"<body> <h1>This is<b>bold</b>heading</h1> <p>This is <u>underline</u>paragraph</p> </body>"; var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlBody = htmlDoc.DocumentNode.SelectSingleNodes("//body"); HtmlNodeCollection firstChild= htmlBody.FirstChild; Console.WriteLine(firstChild.OuterHtml); } } đầu ra <h1>This is<b>bold</b>heading</h1> Con cuối cùng Ví dụ var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//td/input");0 đầu ra var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//td/input");1 Tiếp theoAnh chị em Ví dụ var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//td/input");2 đầu ra var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//td/input");3 Phương thức duyệt HTMLTổ tiên(). Nhận tất cả tổ tiên của nút Tổ tiên (Chuỗi). Nhận tổ tiên với tên phù hợp Tổ tiênAndSelf(). Nhận tất cả các nút tổ tiên và nút hiện tại Tổ tiênAndSelf(Chuỗi). Nhận tất cả các nút tổ tiên và nút hiện tại khớp với tên Con cháuNút. Lấy tất cả các nút Hậu duệ cho nút này và từng nút con Hậu duệ(). Lấy tất cả các nút Hậu duệ trong danh sách liệt kê Con cháu (Chuỗi). Nhận tất cả các nút con cháu phù hợp với tên Con cháuAndSelf(). Trả về một nhóm gồm tất cả các nút con của phần tử này, theo thứ tự tài liệu Hậu duệAndSelf(Chuỗi). Nhận tất cả các nút con bao gồm cả nút này Yếu tố. Nhận tên phù hợp với nút con thế hệ đầu tiên yếu tố. Nhận các nút con thế hệ đầu tiên phù hợp với tên Người viết HTMLLưu tài liệu Html và viết HtmlNode Các phương thức của Trình soạn thảo HTML (HtmlDocument)Lưu (Luồng). Lưu tài liệu HTML vào luồng đã chỉ định Lưu(StreamWriter). Lưu tài liệu HTML vào StreamWriter được chỉ định Lưu(TextWriter). Dành riêng tài liệu HTML cho TextWriter được liệt kê Lưu (Chuỗi). Bảo lưu tài liệu hỗn hợp vào tệp liệt kê Lưu (XmlWriter). Đặt trước tài liệu HTML vào liệt kê XmlWriter Lưu (Luồng, Mã hóa). Theo dõi tài liệu HTML đến luồng được liệt kê Lưu (Chuỗi, Mã hóa). Theo dõi tài liệu hỗn hợp vào tệp liệt kê Các phương thức của Trình soạn thảo HTML (HtmlNode)WriteContentTo(). Lưu tất cả các phần tử con của nút vào một chuỗi WriteContentTo(TextWriter). Dành tất cả các phần tử con của nút cho TextWriter được liệt kê Viết thư cho(). Dành riêng nút hiện tại cho một chuỗi WriteTo(TextWriter). Dành riêng nút hiện tại cho TextWriter được liệt kê WriteTo(XmlWriter). Dành riêng nút hiện tại cho XmlWriter được liệt kê Tiện ích HTMLPhương thức tiện ích HTML (HtmlDocument) Phát hiện Mã hóa (Luồng). Tìm hiểu mã hóa của luồng HTML Phát hiện Mã hóa (Trình đọc văn bản). Tìm hiểu mã hóa của văn bản HTML được cung cấp trên TextReader Phát hiện Mã hóa (Chuỗi). Tìm hiểu mã hóa của tệp HTML Phát hiệnEncodingAndLoad(Chuỗi). Tìm hiểu mã hóa của tài liệu HTML từ một tệp trước, sau đó tải tệp DetectEncodingAndLoad(Chuỗi, Boolean). Tìm hiểu mã hóa của tài liệu HTML từ một tệp trước, sau đó tải tệp Thuộc tính HTMLThuộc tính HTML Phương thức Thêm (HtmlAttribute). Thêm mặt hàng được cung cấp vào bộ sưu tập Thêm (Chuỗi, Chuỗi). Thêm một thuộc tính mới vào bộ sưu tập với các giá trị đã cho Nối (Chuỗi). Tạo và chèn một thuộc tính mới làm thuộc tính cuối cùng trong bộ sưu tập Nối (HtmlAttribute). Chèn thuộc tính được chỉ định làm thuộc tính cuối cùng trong bộ sưu tập Nối (Chuỗi, chuỗi). Tạo và chèn một thuộc tính mới làm thuộc tính cuối cùng trong bộ sưu tập Di dời(). Xóa tất cả các thuộc tính khỏi bộ sưu tập Xóa (Chuỗi). Xóa một thuộc tính khỏi danh sách, sử dụng tên của nó. Nếu có nhiều thuộc tính có tên này, tất cả chúng sẽ bị xóa Xóa (HtmlAttribute). Xóa một thuộc tính nhất định khỏi danh sách Bỏ hết(). Xóa tất cả các thuộc tính trong danh sách Loại bỏAt(). Xóa thuộc tính tại chỉ mục đã chỉ định SetAttributeValue(). Đặt giá trị của thuộc tính, thêm thuộc tính hoặc xóa thuộc tính. Nếu không tìm thấy thuộc tính, nó sẽ được tạo tự động Tôi đã trình bày rất nhiều điều với rất ít mã. Tôi hy vọng bài đăng này chỉ cho chúng ta cách phân tích cú pháp tài liệu HTML trong C# một cách hiệu quả và gây ấn tượng sâu sắc hơn nữa với bạn về sức mạnh của thư viện này Rahul Huria Chuyên gia quét web tại Phần mềm Loginworks Một người nghiện công nghệ và nhà văn có thể mô tả tôi tốt nhất 😀. Tôi yêu và sống với công nghệ chảy trong máu mình. Sau khi tạo chương trình cạo đầu tiên của mình, tôi chắc chắn rằng đó là công việc của mình và tôi đã dành 4 năm để nghiên cứu về nó. Tôi thích giúp đỡ những người khác muốn tìm hiểu thêm về bất kỳ loại quét web nào. Vui lòng liên hệ trong trường hợp bạn cũng muốn biết |