Saya ingin dapat mengambil html halaman web dan menyimpannya ke sebuah String
, jadi saya dapat melakukan beberapa pemrosesan padanya. Juga, bagaimana saya bisa menangani berbagai jenis kompresi.
Bagaimana saya bisa melakukan itu menggunakan Java?
java
http
compression
jjnguy
sumber
sumber
Jawaban:
Berikut beberapa kode yang diuji menggunakan kelas URL Java . Saya akan merekomendasikan melakukan pekerjaan yang lebih baik daripada yang saya lakukan di sini untuk menangani pengecualian atau meneruskannya ke tumpukan panggilan.
sumber
DataInputStream
keBufferedReader
. Dan ganti"dis = new DataInputStream(new BufferedInputStream(is));"
ke"dis = new BufferedReader(new InputStreamReader(is));"
InputStreamReader
?Saya akan menggunakan parser HTML yang layak seperti Jsoup . Semudah itu:
Ini menangani GZIP dan tanggapan terpotong serta pengkodean karakter sepenuhnya secara transparan. Ini juga menawarkan lebih banyak keuntungan, seperti traverse HTML dan manipulasi oleh pemilih CSS seperti yang dapat dilakukan jQuery. Anda hanya perlu mengambilnya sebagai
Document
, bukan sebagai fileString
.Anda benar - benar tidak ingin menjalankan metode String dasar atau bahkan regex pada HTML untuk memprosesnya.
Lihat juga:
sumber
;)
NetworkOnMainThreadException
Jawaban Bill sangat bagus, tetapi Anda mungkin ingin melakukan beberapa hal dengan permintaan seperti kompresi atau agen pengguna. Kode berikut menunjukkan bagaimana Anda dapat berbagai jenis kompresi untuk permintaan Anda.
Untuk juga mengatur agen pengguna, tambahkan kode berikut:
sumber
Nah, Anda bisa menggunakan pustaka bawaan seperti URL dan URLConnection , tetapi mereka tidak memberikan banyak kendali.
Secara pribadi saya akan menggunakan perpustakaan Apache HTTPClient .Sunting: HTTPClient telah disetel ke akhir masa pakai oleh Apache. Penggantinya adalah: Komponen HTTP
sumber
Semua pendekatan yang disebutkan di atas tidak mengunduh teks halaman web seperti yang terlihat di browser. hari ini banyak data dimuat ke browser melalui skrip di halaman html. tidak ada teknik yang disebutkan di atas mendukung skrip, mereka hanya mengunduh teks html saja. HTMLUNIT mendukung javascript. jadi jika Anda ingin mengunduh teks halaman web seperti yang terlihat di browser, maka Anda harus menggunakan HTMLUNIT .
sumber
Anda kemungkinan besar perlu mengekstrak kode dari halaman web yang aman (protokol https). Dalam contoh berikut, file html sedang disimpan ke c: \ temp \ filename.html Selamat menikmati!
sumber
Pada kotak Unix / Linux Anda bisa menjalankan 'wget' tetapi ini sebenarnya bukan pilihan jika Anda menulis klien lintas platform. Tentu saja ini mengasumsikan bahwa Anda tidak benar-benar ingin berbuat banyak dengan data yang Anda unduh antara saat mengunduhnya dan itu mengenai disk.
sumber
Jetty memiliki klien HTTP yang dapat digunakan untuk mengunduh halaman web.
Contoh mencetak konten halaman web sederhana.
Dalam tutorial Membaca halaman web di Java, saya telah menulis enam contoh dowloading halaman web secara terprogram di Java menggunakan URL, JSoup, HtmlCleaner, Apache HttpClient, Jetty HttpClient, dan HtmlUnit.
sumber
Dapatkan bantuan dari kelas ini untuk mendapatkan kode dan memfilter beberapa informasi.
sumber
Untuk melakukannya menggunakan Files.copy yang kuat NIO.2 (InputStream in, Path target):
sumber
sumber