2014-07-11 16 views
12

Tôi đã sử dụng phương pháp này để lấy một trang web thành một đối tượng org.jsoup.nodes.Document:Làm cách nào để lưu Tài liệu Jsoup vào một tệp HTML?

myDoc = Jsoup.connect(myURL).ignoreContentType(true).get();

Làm thế nào tôi nên viết đối tượng này vào một tập tin HTML? Phương thức myDoc.html(), myDoc.text()myDoc.toString() không xuất tất cả các phần tử của tài liệu.

Một số thông tin trong phần tử javascript có thể bị mất khi phân tích cú pháp. Ví dụ: "dấu thời gian" trong nguồn của trang phương tiện Instagram.

+2

Bạn thiếu những yếu tố gì khi gọi 'myDoc.html()'? – cy3er

+0

Một số yếu tố có thể bị xóa hoặc phân tích cú pháp khác khi bạn sử dụng Jsoup để tìm nạp. Sử dụng danh sách trắng để sửa lỗi! –

+0

@ cy3er Tôi đã thêm một ví dụ. Trong trường hợp này, dung dịch của alkis hoạt động. –

Trả lời

4

Thực tế là có những yếu tố bị bỏ qua, phải do nỗ lực bình thường hóa của Jsoup.

Để có được kết quả chính xác của máy chủ mà không có bất kỳ hình thức chuẩn hóa nào, hãy sử dụng tính năng này.

Connection.Response html = Jsoup.connect("PUT_URL_HERE").execute(); 
System.out.println(html.body()); 
9

Sử dụng doc.outerHtml().

import org.apache.commons.io.FileUtils; 

public void downloadPage() throws Exception { 
     final Response response = Jsoup.connect("http://www.example.net").execute(); 
     final Document doc = response.parse(); 

     final File f = new File("filename.html"); 
     FileUtils.writeStringToFile(f, doc.outerHtml(), "UTF-8"); 
    } 

Đừng quên bắt ngoại lệ. Thêm phụ thuộc hoặc tải xuống thư viện Apache commons-io để dễ dàng và nhanh chóng lưu các tệp theo định dạng UTF-8.

Các vấn đề liên quan