2008-08-28 38 views
23

Nếu không sử dụng bất kỳ thư viện bên ngoài nào, cách đơn giản nhất để tìm nạp nội dung HTML của trang web vào một chuỗi là gì?Cách tìm nạp HTML trong Java

+3

thể trùng lặp của http://stackoverflow.com/questions/238547/how-do-you-programmatically-download-a-webpage-in-java – jjnguy

Trả lời

32

Tôi hiện đang sử dụng này:

String content = null; 
URLConnection connection = null; 
try { 
    connection = new URL("http://www.google.com").openConnection(); 
    Scanner scanner = new Scanner(connection.getInputStream()); 
    scanner.useDelimiter("\\Z"); 
    content = scanner.next(); 
}catch (Exception ex) { 
    ex.printStackTrace(); 
} 
System.out.println(content); 

Nhưng không chắc chắn nếu có một cách tốt hơn.

+5

Tại sao "\\ Z" ? Nó không phải là một EOF chỉ trên Windows? Tôi chỉ đoán ở đây. – greenoldman

+0

Cẩn thận với hiệu suất cao khi sử dụng. – qwertzguy

+0

Tại sao bạn sử dụng "\\ Z"? Nó làm gì? Tôi đã thử mà không có nó, nó không hoạt động. –

2

Tôi vừa rời khỏi this post in your other thread, mặc dù những gì bạn có ở trên cũng có thể hoạt động. Tôi không nghĩ là sẽ dễ dàng hơn người kia. Các gói Apache có thể được truy cập bằng cách chỉ sử dụng import org.apache.commons.HttpClient ở đầu mã của bạn.

Edit: Quên liên kết;)

+0

Dường như bạn cũng phải cài đặt tệp JAR :) –

20

này đã làm việc tốt cho tôi:

URL url = new URL(theURL); 
InputStream is = url.openStream(); 
int ptr = 0; 
StringBuffer buffer = new StringBuffer(); 
while ((ptr = is.read()) != -1) { 
    buffer.append((char)ptr); 
} 

Không chắc tại về việc liệu các giải pháp khác (s) cung cấp bất kỳ hiệu quả hơn hay không.

+0

Bạn không cần phải bao gồm những điều sau đây? nhập java.io. * nhập java.net. * –

+1

Chắc chắn, nhưng chúng là java cốt lõi rất đơn giản. Đối với các mã thực tế, các báo cáo nhập khẩu được bỏ qua cho rõ ràng. –

+0

sau 'while', bạn cũng nên hiển thị nội dung của bộ đệm! hoặc viết một phương thức mà bạn đọc nó! – rupinderjeet

2

Trong khi không dùng vani-Java, tôi sẽ cung cấp một giải pháp đơn giản hơn. Sử dụng Groovy ;-)

String siteContent = new URL("http://www.google.com").text 
Các vấn đề liên quan