XPath là gì?
Trình duyệt Scrapeless Agent cung cấp khả năng thực thi trình duyệt đám mây để kiểm tra nội dung trang được hiển thị trước khi chọn các biểu thức trích xuất như XPath.
XPath là một ngôn ngữ để chọn và đánh giá các phần của cây tài liệu. Trong việc cạo dữ liệu web, một biểu thức XPath có thể xác định các phần tử, thuộc tính hoặc văn bản liên quan đến một bản ghi. Biểu thức hoạt động trên tài liệu được cung cấp cho người đánh giá; nó không lấy một trang hoặc thực thi ứng dụng của nó.
XPath hữu ích khi việc lựa chọn phụ thuộc vào các mối quan hệ trong cây. Độ chính xác của nó đến từ việc hiểu nút ngữ cảnh, các bước đường dẫn và điều kiện. Một đường dẫn dài được sao chép từ công cụ nhà phát triển có thể kém tin cậy hơn một biểu thức ngắn gắn với một ranh giới bản ghi có nghĩa.
Tóm lại
- XPath truy vấn một cây tài liệu. Việc lấy và hiển thị diễn ra trước khi lựa chọn.
- Các đường dẫn tương đối phụ thuộc vào ngữ cảnh. Một biểu thức theo phạm vi bản ghi giúp giữ các trường liên kết với cùng một thực thể.
- Điều kiện lọc các nút được chọn. Vị trí và nhóm có thể thay đổi nút nào mà một biểu thức trả về.
- Hỗ trợ người đánh giá là quan trọng. Kiểm tra phiên bản XPath, kiểu kết quả, và xử lý không gian tên trong thời gian chạy của bạn.
Cây Tài liệu mà XPath Thấy
XPath đánh giá một đại diện cây của một tài liệu. Cụ thể đặc tả ngôn ngữ XPath xác định các đường dẫn vị trí, biểu thức, và chức năng cho mô hình dữ liệu của nó. Một phân tích viên hoặc trình duyệt cung cấp cây mà biểu thức hoạt động trên đó.
Sự phân biệt giữa mã nguồn và cây đã phân tích là quan trọng. Một trình duyệt có thể sửa các HTML bị sai và các tập lệnh trang có thể thêm các phần tử. Một trình phân tích HTTP có thể thấy phản hồi ban đầu, trong khi một người đánh giá trình duyệt thấy tài liệu hiện tại. Do đó, cùng một biểu thức có thể có đầu vào khác mà không có biểu thức sai.
Kiểm tra thực tế cây được sử dụng bởi môi trường trích xuất của bạn. Xác nhận rằng các phần tử cần thiết tồn tại và rằng bản ghi chính có thể phân biệt được từ điều hướng và các đề xuất. Nếu một biểu thức trả về không có gì, bắt đầu bằng cách hỏi xem đầu vào có chứa tài liệu mong đợi không.
XPath không tải nội dung vào cây đó. Nếu giá sản phẩm chỉ xuất hiện sau khi JavaScript thực thi, việc chọn mã nguồn ban đầu không thể tạo ra nó. Giữ trách nhiệm giai đoạn lấy hoặc hiển thị để cung cấp tài liệu phù hợp.
Các Bước Đường Dẫn, Trục và Điều Kiện
Một đường dẫn XPath xác định các nút thông qua các bước, và điều kiện thu hẹp lựa chọn. Ghi chú dấu gạch chéo quen thuộc mô tả các mối quan hệ, nhưng ngữ cảnh và nhóm xác định kết quả chính xác.
Một đường dẫn tuyệt đối bắt đầu từ gốc tài liệu. Một đường dẫn tương đối bắt đầu từ nút ngữ cảnh được cung cấp. Ví dụ, .//a mô tả các phần tử neo con cháu dưới ngữ cảnh hiện tại trong một cây HTML điển hình. Đây là một ví dụ cấu trúc, không phải là một bộ chọn được xác minh với một trang sản xuất cụ thể.
Một trục gán tên cho một mối quan hệ như con, con cháu, cha, hoặc anh chị em theo sau. Các điều kiện có thể kiểm tra một thuộc tính hoặc một điều kiện khác. Biểu thức .//a[@href] thu hẹp các neo con cháu tới những cái mang thuộc tính href trong một tài liệu HTML phù hợp.
Vị trí cần được chú ý. (.//p)[1] chọn đoạn đầu tiên trong kết quả con cháu được nhóm dưới ngữ cảnh hiện tại, trong khi .//p[1] có ý nghĩa cấp độ bước khác. Dấu ngoặc đơn là một phần của logic truy vấn, không chỉ là định dạng.
Chỉ chọn những mối quan hệ mà dữ liệu yêu cầu. Một đường dẫn dựa trên mọi phần tử bao bọc có thể bị lỗi khi một container bố trí vô hại được chèn vào. Nối chọn lọc với ý nghĩa của bản ghi nơi nguồn cung cấp ý nghĩa đó.
XPath Tương Đối và Ranh Giới Bản Ghi
XPath tương đối giữ việc trích xuất bên trong một bản ghi đã biết khi người đánh giá sử dụng bản ghi đó làm ngữ cảnh của nó. Điều này có giá trị trên các trang chứa các thực thể lặp lại.
Giả sử một trang danh mục được phép có các thẻ sản phẩm. Đầu tiên, xác định mỗi thẻ, sau đó trích xuất tiêu đề, liên kết đến đích, và giá của thẻ đó trong ngữ cảnh đó. Vòng lặp bên ngoài xác định thực thể; các biểu thức bên trong xác định các trường của nó.
Một biểu thức trên toàn tài liệu bên trong vòng lặp thẻ có thể vô tình trả về giá trị từ các thẻ khác. Các biểu thức bắt đầu với một tìm kiếm con cháu toàn cầu nên được xem xét cẩn thận. Sử dụng một hình thức tương đối ngữ cảnh rõ ràng khi ý định là ở lại dưới nút hiện tại.
Các trường thiếu sau đó vẫn gắn liền với bản ghi đúng. Một thẻ không có giá không làm thay đổi mọi cặp tiêu đề-giá sau đó nếu việc trích xuất được giới hạn theo thẻ. Điều này tránh một vấn đề phổ biến với việc thu thập độc lập các danh sách toàn trang và kết hợp chúng theo vị trí.
Cây Mô hình đánh giá DOM và XPath cung cấp ngữ cảnh ở cấp trình duyệt cho các thao tác đó. Ứng dụng của bạn vẫn cần quyết định xem một trường là tùy chọn, mơ hồ, hay yêu cầu để chấp nhận bản ghi.
Văn bản, Thuộc Tính, và Các Giá Trị Trả Về
Việc chọn XPath và trích xuất văn bản có liên quan nhưng là các thao tác khác nhau. Một người đánh giá có thể trả về các nút hoặc các giá trị đã chuyển đổi tùy theo biểu thức và kiểu kết quả yêu cầu.
Một lựa chọn thuộc tính có thể xác định một giá trị liên kết, trong khi một lựa chọn phần tử xác định nút mà từ đó ứng dụng có thể đọc nội dung. Một biểu thức nút văn bản có thể hành xử khác so với việc đọc toàn bộ văn bản con cháu của một phần tử. Các thẻ lồng và mã nguồn khác làm cho sự phân biệt đó trở nên rõ ràng.
Đối với một nhãn chứa các phần tử lồng ghép, việc chỉ đọc một nút văn bản ngay lập tức có thể bỏ lỡ một phần của văn bản hiển thị. Quyết định xem hợp đồng trường yêu cầu các nút thô, văn bản kết hợp, hay một chuỗi đã chuẩn hóa. Bảo tồn văn bản nguồn khi việc dọn dẹp khoảng trắng hoặc chuyển đổi có thể xóa bỏ ý nghĩa.
Trình duyệt Xử lý kết quả Document.evaluate hỗ trợ các kiểu kết quả rõ ràng. Một kết quả đơn nút có thể ẩn đi tính đa dạng không mong đợi nếu ứng dụng không bao giờ đếm các kết quả phù hợp. Một bộ lặp hoặc ảnh chụp cần xử lý phù hợp với loại đó.
Giữ cho các chuyển đổi có chủ đích. Một kết quả chuỗi là thuận tiện cho một số lĩnh vực, nhưng nó có thể biến mất một lựa chọn thành một giá trị trống. Nếu sự vắng mặt quan trọng, hãy xác thực lựa chọn trước khi chuyển đổi nó.
Tính tương thích tên miền và thời gian chạy XPath
Tính tương thích XPath phụ thuộc vào bộ đánh giá và loại tài liệu. XPath bản địa của trình duyệt thường theo hành vi XPath 1.0; các engine khác có thể hỗ trợ các phiên bản ngôn ngữ mới hơn hoặc các phần mở rộng.
Đừng chuyển các biểu thức giữa các thời gian chạy mà không kiểm tra các hàm được hỗ trợ và cách xử lý trả về của chúng. Một biểu thức sử dụng hàm phiên bản sau có thể hợp lệ trong một engine và không khả dụng trong một engine khác. Một truy vấn hoạt động trong giao diện scraper chuyên biệt không phải là bằng chứng cho việc cùng một cú pháp hoạt động trong trình duyệt.
Các tên miền giới thiệu một sự phân biệt khác, đặc biệt đối với XML và nội dung có tên miền. Một thử nghiệm tên không có tiền tố không phải là một sự nối khớp phổ quát cho cùng một tên cục bộ trong mọi tên miền. Có thể cần một bộ giải tên miền để liên kết một tiền tố truy vấn với URI tên miền dự định.
Một thử nghiệm tên cục bộ rộng rãi có thể hữu ích cho chẩn đoán, nhưng nó cũng có thể khớp với các từ vựng không liên quan. Ưu tiên xử lý tên miền rõ ràng khi tài liệu yêu cầu điều đó. Ghi lại chế độ phân tích cú pháp: phân tích cú pháp dưới dạng HTML và phân tích cú pháp dưới dạng XML có thể tạo ra hành vi đặt tên và cây khác nhau.
Xác minh các truy vấn đại diện trong thời gian chạy thực tế. Lưu trữ biểu thức và hợp đồng trích xuất cùng nhau để các thay đổi đối với thư viện hoặc bộ phân tích không làm thay đổi lặng lẽ ý nghĩa trường.
XPath và Bộ chọn CSS
XPath và bộ chọn CSS chồng chéo cho việc lựa chọn phần tử thông thường, trong khi cú pháp và hành vi bộ đánh giá của chúng khác nhau. Chọn ngôn ngữ thể hiện mối quan hệ bản ghi rõ ràng trong thời gian chạy của bạn.
| Nhu cầu lựa chọn | Xem xét XPath | Xem xét CSS |
|---|---|---|
| Khớp phần tử hoặc thuộc tính | Các bước và điều kiện đường dẫn thể hiện sự lựa chọn. | Bộ chọn phần tử, lớp và thuộc tính ngắn gọn. |
| Mối quan hệ cây | Trục mô tả các mối quan hệ đã đặt tên. | Các bộ kết hợp và bộ chọn quan hệ được hỗ trợ mô tả các mối quan hệ. |
| Điều kiện dựa trên văn bản | Các hàm văn bản có thể tham gia vào các điều kiện. | Các bộ chọn chuẩn không cung cấp một khớp nội dung văn bản chung. |
| Dữ liệu trả về | Biểu thức và API có thể trả về các nút hoặc giá trị. | API bộ chọn trình duyệt trả về các phần tử khớp. |
Tránh tuyên bố rằng CSS không bao giờ có thể biểu đạt các điều kiện liên quan đến tổ tiên: các bộ chọn quan hệ hiện đại có thể mô tả một số mối quan hệ như vậy. Cũng tránh một bảng xếp hạng tốc độ phổ quát. Hiệu suất phụ thuộc vào bộ đánh giá, biểu thức và khối lượng công việc.
So sánh XPath và bộ chọn CSS cung cấp bối cảnh thực hiện. Kiểm tra lại hành vi thời gian chạy và các tiêu chuẩn hiện tại trước khi chấp nhận một biểu thức hoặc một tuyên bố phân loại từ một ví dụ cũ hơn.
XPath có thể duy trì cho Các Trang Động
XPath có thể duy trì phụ thuộc vào một hợp đồng bản ghi ổn định và một tài liệu có thể quan sát được. Sử dụng các thuộc tính có ý nghĩa khi có, giới hạn giả định vị trí và xác thực cả các khớp bị thiếu và nhiều khớp.
Một đường dẫn tuyệt đối được tạo ra bởi trình duyệt có thể xác định một nút hôm nay trong khi mã hóa toàn bộ cấu trúc trình bày. Nếu một wrapper mới được chèn vào, đường dẫn có thể ngừng khớp. Một biểu thức ngắn hơn gắn với một phần có ý nghĩa hơn có thể thể hiện rõ hơn trường dự định, nhưng nó vẫn yêu cầu phải kiểm tra nguồn.
Kiểm tra các biểu thức qua các biến thể liên quan. Một mặt hàng giảm giá có thể có một vài phần tử giá; một sản phẩm không còn hàng có thể bỏ qua một điều khiển mua. Xem xét các biến thể đó như một phần của thiết kế trường chứ không phải là những ngoại lệ bất ngờ cho một trang hạnh phúc duy nhất.
Khi rendering được yêu cầu, Trình duyệt tác nhân Scrapeless cung cấp lớp thực thi được mô tả trong tài liệu phiên trình duyệt của nó.Câu truy vấn XPath truy cập vào cây kết quả; nó không thể xác định liệu trang có được phép hay liệu dữ liệu có đáp ứng hợp đồng kinh doanh của bạn hay không.
Xem lại Bảng giá Scrapeless cho công việc trình duyệt mà nhiệm vụ của bạn cần. Giữ bảo trì truy vấn và xem xét trang bị từ chối trong kế hoạch hoạt động, vì chất lượng lựa chọn vẫn là trách nhiệm của ứng dụng.
Kết luận
XPath là một ngôn ngữ truy vấn tài liệu mà độ chính xác của nó phụ thuộc vào bối cảnh, các điều kiện và hành vi thời gian chạy. Sử dụng lựa chọn tương đối trong các bản ghi đã biết, kiểm tra số lượng trước khi chấp nhận giá trị và xử lý các tên miền một cách có chủ đích.
Bắt đầu với cây thực tế thay vì một đường dẫn sao chép. Đảm bảo mỗi biểu thức mô tả ý nghĩa của một trường, sau đó xác minh nó qua các biến thể trang đại diện. Kết quả là một truy vấn có thể được giải thích khi nguồn thay đổi.
Kiểm tra Tài liệu trước khi bạn Trích xuất
Sử dụng Trình duyệt Đại lý Scrapeless cho việc hiển thị trang động được phép, sau đó áp dụng quy tắc trích xuất theo phạm vi bản ghi.
Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không cần thẻ tín dụng.
Nhận Tín dụng $5 của bạn →Câu hỏi thường gặp
XPath có lấy được một trang web không?
XPath không lấy được một trang web. Nó đánh giá cây tài liệu được cung cấp bởi một trình phân tích cú pháp hoặc trình duyệt. Việc lấy dữ liệu và bất kỳ việc hiển thị cần thiết nào phải xảy ra trước khi biểu thức có thể chọn nội dung hữu ích.
Sự khác biệt giữa XPath tuyệt đối và tương đối là gì?
XPath tuyệt đối bắt đầu từ gốc tài liệu, trong khi XPath tương đối sử dụng nút ngữ cảnh được cung cấp. Lựa chọn tương đối theo phạm vi bản ghi giúp giữ các trường được gắn vào thực thể hiện tại đang được xử lý.
Tại sao một biểu thức XPath trả về nhiều kết quả phù hợp?
Một biểu thức XPath trả về nhiều kết quả phù hợp khi nhiều nút thỏa mãn đường dẫn và điều kiện của nó. Kiểm tra xem tính đa dạng đó có phải là dự định trước khi lấy giá trị đầu tiên. Tính mơ hồ có thể tiết lộ một ranh giới bản ghi không chính xác.
XPath có tốt hơn CSS cho mọi trình thu thập dữ liệu không?
XPath không tốt hơn CSS cho mọi trình thu thập dữ liệu. Lựa chọn phụ thuộc vào mối quan hệ đang được chọn và sự hỗ trợ của runtime. Các biểu thức rõ ràng, đã được xác thực thường hữu ích hơn so với một sở thích phổ quát.