Jsoup là gì?
Trình duyệt thu thập không còn rác chạy các trang động trong một trình duyệt đám mây để các ứng dụng Java có thể xử lý HTML kết quả với các bộ phân tích như jsoup.
Jsoup, thường được viết là jsoup bởi dự án, là một thư viện Java để lấy, phân tích, truy vấn và sửa đổi HTML. Nó xây dựng một cây tài liệu từ một URL, tệp hoặc chuỗi và cho phép một ứng dụng trích xuất các phần tử, thuộc tính và văn bản. Nó cũng hỗ trợ làm sạch HTML không đáng tin cậy bằng một danh sách an toàn rõ ràng.
Đối với một ứng dụng Java, jsoup có thể biến một trang bài viết công khai thành một tiêu đề, nội dung và tập hợp các liên kết mà không cần khởi động một trình duyệt. Nó không thực thi JavaScript của trang mục tiêu. Hãy chọn phương thức thu thập xung quanh nội dung bạn cần, sau đó sử dụng jsoup để diễn giải đánh dấu kết quả.
Cách Jsoup biến đánh dấu thành một tài liệu
Jsoup phân tích đầu vào thành một Tài liệu chứa các phần tử và các nút khác có thể được duyệt qua và chọn lựa. Bộ phân tích HTML của nó tuân theo các quy tắc phân tích HTML và được thiết kế để phù hợp với đánh dấu trong thế giới thực, bao gồm cả việc lồng ghép không hoàn hảo. The giao diện xử lý HTML jsoup mang đến việc thu thập, trích xuất và sửa đổi tài liệu vào một thư viện Java.
Cây kết quả hữu ích hơn cho việc trích xuất hơn là coi toàn bộ trang như một chuỗi không phân biệt. Một tiêu đề thuộc về một phần, một liên kết có thuộc tính địa chỉ, và một thẻ chứa các trường thuộc về một thực thể. Các quy tắc trích xuất của bạn có thể diễn đạt những mối quan hệ này thay vì phụ thuộc vào các vị trí văn bản tùy ý.
Phân tích không chứng minh rằng tài liệu là cái mà bạn định thu thập. Một phản hồi có thể chứa một trang điều hướng trang web, một thông báo truy cập, hoặc một hộp ứng dụng. Thiết lập các dấu hiệu tài liệu mong đợi trước khi chọn các trường để thư viện không che giấu một vấn đề thu thập khi nó có khả năng phân tích đánh dấu không hoàn hảo.
Lấy một URL hoặc phân tích HTML hiện có
Jsoup có thể lấy và phân tích một URL web, hoặc phân tích đánh dấu mà một thành phần khác đã lấy. Một kết nối trực tiếp là thuận tiện cho một trang công khai đơn giản. HTML hiện có rất hữu ích khi ứng dụng có một lớp HTTP riêng biệt, đọc tài liệu đã lưu hoặc nhận ảnh chụp từ một quy trình làm việc của trình duyệt.
Các đường dẫn này nên chia sẻ một hợp đồng trích xuất. Bộ phân tích cần đánh dấu đã chấp nhận và, khi các liên kết quan trọng, địa chỉ cơ sở của tài liệu. Thành phần thu thập nên giữ ngữ cảnh phản hồi như nguồn và URL cuối cùng. Đừng bỏ qua thông tin đó chỉ vì một phương pháp phân tích có thể trả về một Tài liệu trực tiếp.
Tách biệt việc thu thập khỏi phân tích khi điều đó làm cho chính sách yêu cầu dễ kiểm soát hơn. Một dịch vụ Java có thể đã có các quy ước về giới hạn thời gian, xác thực điểm đến và xác thực. Giữ những quy ước đó trong một lớp thu thập có thể rõ ràng hơn so với việc thực hiện một chính sách thứ hai bên trong mỗi phương pháp trích xuất.
HTML đã lưu cũng hỗ trợ việc bảo trì có trọng tâm. Một tài liệu đại diện được cho phép cho phép bạn kiểm tra một thay đổi bộ chọn mà không cần liên hệ với nguồn nhiều lần. Đối xử với tài liệu đó như là một đầu vào thử nghiệm, và đừng trình bày kết quả từ nó như một tập hợp sống. Đầu vào đã lưu xác minh hành vi phân tích hơn là tính khả dụng của nguồn hiện tại.
Bộ chọn CSS và Duyệt tài liệu
Các bộ chọn Jsoup tìm các phần tử bằng thẻ, thuộc tính, lớp và mối quan hệ cấu trúc. The giao diện bộ chọn CSS jsoup có sẵn trên các tài liệu và phần tử, cho phép việc trích xuất bắt đầu từ một container bản ghi và tiếp tục trong bối cảnh địa phương đó.
Đối với một danh mục khóa học công khai minh họa, chọn mỗi thẻ khóa học trước khi đọc tiêu đề, thời gian và liên kết chi tiết của nó. Một số khóa học có thể bỏ qua thời gian. Lựa chọn địa phương giữ sự vắng mặt đó gắn liền với khóa học đúng thay vì chuyển giá trị giữa các danh sách thu thập độc lập.
Sử dụng duyệt qua khi mối quan hệ dễ dàng được diễn đạt thông qua cây. Một nhãn và giá trị lân cận của nó có thể không có lớp thuận tiện, nhưng khu vực cha của chúng vẫn có thể cung cấp một ranh giới ổn định. Tránh dựa vào một chuỗi đầy đủ các vị trí từ gốc tài liệu khi có một mối quan hệ cấp mục sẵn có.
Cũng hãy làm cho số lượng giá trị mong đợi rõ ràng trong ứng dụng. Một trường dự định có một tiêu đề không nên lặng lẽ chấp nhận tất cả các tiêu đề kết hợp. Nếu nhiều phần tử hợp lý phù hợp, refin quy tắc hoặc bảo tồn sự mơ hồ để xem xét. Trả về một chuỗi không rỗng là một phép kiểm tra độ chính xác yếu.
Văn bản, HTML và Thuộc tính cần Quy tắc Đầu ra Riêng
Jsoup có thể phơi bày văn bản thuần túy, đánh dấu và giá trị thuộc tính, nhưng những đầu ra này phục vụ các mục đích khác nhau ở phía hạ lưu. Một chỉ mục tìm kiếm có thể cần văn bản đã chuẩn hóa. Một trình hiển thị nội dung kiểm soát có thể cần đánh dấu đã được làm sạch. Một bảng liên kết cần địa chỉ được giải quyết và ngữ cảnh nguồn.
Trích xuất văn bản có thể bao gồm nội dung cấp dưới, vì vậy một container đã chọn có thể chứa nhãn hoặc điều hướng không thuộc về trường. Một container tiêu đề khóa học cũng có thể bao gồm một huy hiệu. Kiểm tra xem phạm vi trích xuất đã chọn có cung cấp tiêu đề một mình hay không thay vì giả định rằng mỗi từ gần đó là một phần của nó.
Bảo tồn các giá trị có cấu trúc trước khi chuẩn hóa hình thức hiển thị của chúng. Một mã khóa học có thể có dấu câu có ý nghĩa và số 0 đứng trước. Một nhãn thời gian có thể chứa các đơn vị nên được lưu giữ riêng biệt với một số lượng số. Áp dụng cùng một quy trình làm sạch văn bản cho mọi trường có thể làm tổn hại đến danh tính ngay cả khi trang đã được phân tích đúng cách.
| Đầu ra | Hữu ích cho | Ranh giới quan trọng |
|---|---|---|
| Văn bản thuần túy | Tìm kiếm, tóm tắt và giá trị trường | Chọn phạm vi cấp dưới chính xác. |
| Đánh dấu HTML | Hiển thị nội dung phong phú có kiểm soát | Áp dụng chính sách làm sạch phù hợp với đầu ra. |
| Thuộc tính | Các định danh và siêu dữ liệu nguồn | Bảo tồn ý nghĩa ban đầu của trường. |
| Liên kết tuyệt đối | Khám phá và tham chiếu đã lưu | Sử dụng địa chỉ cơ sở chính xác. |
Liên kết tương đối yêu cầu một URI cơ sở
Jsoup giải quyết các liên kết tương đối bằng cách sử dụng URI cơ sở của tài liệu. Đọc thuộc tính địa chỉ thông thường có thể trả về giá trị tương đối của nguồn, trong khi các trợ giúp URL tuyệt đối giải quyết giá trị đó. kiểu mô hình giải quyết URL của jsoup làm cho phần địa chỉ cơ bản trở thành bối cảnh phân tích đúng.
Một chuỗi HTML được lưu không nhất thiết mang theo vị trí từ nơi nó được thu thập. Nếu bạn tải chuỗi đó mà không cung cấp cơ sở thích hợp, một liên kết chi tiết tương đối có thể không được giải quyết như mong đợi. Lưu địa chỉ cùng với đầu vào để việc trích xuất từ các tài liệu đã lưu và mới nhận được tuân theo cùng một quy tắc.
Giải quyết cũng khác với việc chấp nhận. Một URL tuyệt đối hợp lệ về mặt cú pháp có thể chỉ đến ngoài phạm vi nguồn được định hướng của bộ sưu tập. Sau khi giải quyết, hãy kiểm tra sơ đồ và điểm đến trước khi lên lịch yêu cầu khác. Điều này ngăn chặn các liên kết trang thông thường mở rộng một nhiệm vụ danh mục hẹp thành bộ sưu tập không liên quan.
Làm sạch HTML Khác Với Việc Trích Xuất Văn Bản
Bộ làm sạch của Jsoup áp dụng một danh sách an toàn để xác định những phần tử HTML, thuộc tính và giá trị nào có thể giữ lại trong đầu ra. Điều này là quan trọng khi đánh dấu được thu thập hoặc do người dùng cung cấp sẽ được hiển thị dưới dạng HTML. Đây là một thao tác tách biệt với việc phân tích tài liệu hoặc đọc nội dung văn bản của nó.
Các jsoup safelist bộ lọc vệ sinh hoạt động trên cấu trúc đã phân tích. Ứng dụng chọn một chính sách phù hợp với bối cảnh đầu ra. Một trường mô tả cho phép nhấn mạnh và liên kết có thể cần một chính sách khác với một trường chỉ nên chứa văn bản thuần túy.
Xin vui lòng cung cấp văn bản cần dịch từ tiếng Anh sang tiếng Việt.
Một người dọn dẹp cũng có thể xóa thông tin mà bộ dữ liệu của bạn cần. Nếu việc trích xuất phụ thuộc vào một thuộc tính bị loại trừ bởi danh sách trắng hiển thị, hãy trích xuất trường đó trước khi chuẩn bị phiên bản hiển thị văn bản phong phú. Thứ tự đó giữ cho chính sách thu thập dữ liệu và trình bày không vô tình cạnh tranh về một tài liệu có thể thay đổi.
Nơi mà Jsoup Dừng lại và Sự Thu hút Trình duyệt Bắt đầu
Jsoup dừng lại ở việc xử lý tài liệu được cung cấp; nó không chạy một phiên trình duyệt tương tác. Một ứng dụng trang đơn có thể trả về HTML tham chiếu đến các tập lệnh nhưng bỏ qua các thẻ khóa học thực tế. Việc phân tích chính xác phản hồi đó vẫn không mang lại khóa học nào vì trạng thái cần thiết chưa được tạo ra.
Trình duyệt Lấy Dữ liệu Không Bị Lừa cung cấp thực thi trình duyệt đám mây cho những trường hợp này. Sử dụng quy trình làm việc của trình duyệt để đạt được trạng thái trang cần thiết, sau đó chuyển giao HTML liên quan cho lớp trích xuất Java của bạn. Định nghĩa điều gì có nghĩa là hoàn thành trước khi chụp ảnh màn hình, đặc biệt khi bộ lọc hoặc phân trang thay đổi nội dung được hiển thị.
Các Giới thiệu về Scraping Browser giải thích hoạt động của trình duyệt được quản lý, và các liên quan các phương pháp thu thập dữ liệu của trình duyệt cung cấp ngữ cảnh vận hành. Giữ cho sơ đồ bản ghi Java độc lập với phương pháp thu thập để việc thêm chế độ hiển thị không yêu cầu phải định nghĩa lại mọi trường xuất.
Đánh giá Giá không bị ảnh hưởng bởi việc quét xung quanh trình duyệt làm việc mà các nguồn của bạn thực sự yêu cầu. Một tài liệu HTML thông thường có thể có sẵn thông qua một yêu cầu trực tiếp, trong khi một trang khác trong cùng một dự án có thể phụ thuộc vào tương tác. Phân loại các yêu cầu đó theo loại trang thay vì gán một phương pháp tiếp cận nặng nề cho mọi thứ.
Kết luận
Jsoup là một thư viện Java thực tế để chuyển đổi HTML thực thành dữ liệu có cấu trúc và đánh dấu có kiểm soát. Giữ nguyên danh tính tài liệu, địa chỉ cơ sở và ranh giới bản ghi một cách rõ ràng. Sử dụng việc làm sạch cho bối cảnh đầu ra cần thiết, và giới thiệu việc thu thập từ trình duyệt khi nội dung mong muốn phụ thuộc vào việc thực thi trang.
Đưa HTML Động Vào Quy Trình Làm Việc Java Của Bạn
Mua trạng thái trang mà ứng dụng Java của bạn cần với Scrapeless Scraping Browser, sau đó giữ việc trích xuất và làm sạch HTML một cách rõ ràng.
Đăng ký hôm nay và nhận $5 trong 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
Q: Jsoup có thể lấy một URL trực tiếp không?
Jsoup có thể lấy và phân tích các URL HTTP hoặc HTTPS thông qua giao diện kết nối của nó. Nó cũng có thể phân tích các chuỗi và tệp được thu thập từ nơi khác. Chọn con đường phù hợp với chính sách yêu cầu của ứng dụng của bạn và bảo tồn địa chỉ tài liệu khi các liên kết tương đối cần được giải quyết.
Q: Jsoup có chạy JavaScript không?
Jsoup không thực thi JavaScript trong một tài liệu đã tải xuống. Nó có thể phân tích HTML sau khi một thành phần khác đã kết xuất trạng thái trang liên quan. Do đó, một lựa chọn trống có thể chỉ ra nội dung đã kết xuất bị thiếu hơn là một vấn đề với bộ chọn.
Có phải việc phân tích cú pháp HTML thì an toàn để hiển thị hay không?
Phân tích HTML một mình không đảm bảo rằng đánh dấu phù hợp cho việc hiển thị trong ứng dụng của bạn. Jsoup cung cấp một bộ làm sạch riêng với các chính sách danh sách an toàn cho mục đích đó. Chọn một chính sách cho ngữ cảnh đầu ra thực tế và giữ các trường văn bản thuần túy tách biệt với các trường nội dung phong phú.
Tại sao một liên kết được trích xuất lại không đầy đủ?
Một liên kết có thể là tương đối trong tài liệu nguồn, vì vậy giá trị thuộc tính thông thường của nó có thể không phải là một địa chỉ hoàn chỉnh. Cung cấp URI cơ sở chính xác và sử dụng các tính năng giải quyết URL tuyệt đối của jsoup. Kiểm tra điểm đến đã được giải quyết trước khi thêm nó vào một lần thu thập.