Gói linh hoạt HTML XPath

Nhận một chuỗi XPath hợp lệ trỏ đến nút này

không gian tên. HtmlGói Agility
Cuộc họp. HtmlAgilityPack (trong HtmlAgilityPack. dll) Phiên bản. 1. 4. 0. 0 (1. 4. 0. 0)

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 HTML

Bộ chọn cho phép bạn chọn nút HTML từ tài liệu HTML

Phương thức chọn HTML

SelectNodes(). 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 SelectSingleNode

Chọ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;

Gói linh hoạt HTML XPath

Thao tác HTML

Thao tác cho phép bạn vượt qua nút HTML

Thuộc tính thao tác HTML

Nộ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 HTML

AppendChild(). 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 HTML

Duyệt qua cho phép bạn duyệt qua nút HTML

Thuộc tính duyệt HTML

nú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)

Gói linh hoạt HTML XPath

nút con

Ví dụ

using system;

using system.xml;

using htmlAgelityPack;

public class Program

{

public static void Main()

{

var [email protected]"

This isboldheading

This is underlineparagraph

"; 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]"

This isboldheading

This is underlineparagraph

"; var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlBody =  htmlDoc.DocumentNode.SelectSingleNodes("//body"); HtmlNodeCollection firstChild= htmlBody.FirstChild; Console.WriteLine(firstChild.OuterHtml); } }

đầu ra

This isboldheading

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 HTML

Tổ 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 HTML

Lư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 HTML

Phươ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 HTML

Thuộ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

XPath có hoạt động với HTML không?

XPath là một cú pháp để tìm phần tử trên trang web và XPath trong Selenium có thể được sử dụng trên cả tài liệu HTML và XML .

Gói linh hoạt HTML là gì?

HTML Agility Pack là công cụ để đọc, viết và cập nhật tài liệu HTML . Nó thường được sử dụng để quét web, đây là quá trình trích xuất thông tin theo chương trình từ các trang web công cộng. Để bắt đầu sử dụng HTML Agility Pack, chúng ta có thể cài đặt nó bằng NuGet Package Manager. Gói cài đặt HtmlAgilityPack.

Làm cách nào để trích xuất XPath từ HTML?

2). 1) Nhấp vào "Chọn một phần tử từ trang" (hoặc Shift + Ctrl + C). 2) Nhấp chuột trái vào một thành phần trên trang. 3) Nhấp chuột phải vào dòng HTML đã chọn 4) Chọn Sao chép → XPath .

XPath là gì?

XPath là viết tắt của Ngôn ngữ đường dẫn XML . Nó sử dụng một cú pháp không phải XML để cung cấp một cách đánh địa chỉ linh hoạt (trỏ tới) các phần khác nhau của tài liệu XML. Nó cũng có thể được sử dụng để kiểm tra các nút được đánh địa chỉ trong tài liệu để xác định xem chúng có khớp với mẫu hay không.