Adakah yang tahu jika dan bagaimana mungkin untuk mencari Google secara terprogram - terutama jika ada Java API untuk itu?
105
Adakah yang tahu jika dan bagaimana mungkin untuk mencari Google secara terprogram - terutama jika ada Java API untuk itu?
Jawaban:
Beberapa fakta:
Google menawarkan API layanan web penelusuran publik yang mengembalikan JSON : http://ajax.googleapis.com/ajax/services/search/web . Dokumentasi di sini
Java menawarkan
java.net.URL
danjava.net.URLConnection
untuk mengaktifkan serta menangani permintaan HTTP.JSON di Java dapat diubah menjadi objek Javabean yang layak menggunakan sembarang Java JSON API. Salah satu yang terbaik adalah Google Gson .
Sekarang lakukan perhitungannya:
Dengan kelas Javabean ini mewakili data JSON paling penting yang dikembalikan oleh Google (sebenarnya ini mengembalikan lebih banyak data, tetapi terserah Anda sebagai latihan untuk memperluas kode Javabean ini sesuai):
Lihat juga:
java.net.URLConnection
Pembaruan sejak November 2010 (2 bulan setelah jawaban di atas), layanan web penelusuran publik sudah tidak digunakan lagi (dan hari terakhir layanan ditawarkan adalah 29 September 2014). Taruhan terbaik Anda sekarang adalah menanyakan http://www.google.com/search secara langsung bersama dengan agen pengguna yang jujur dan kemudian mengurai hasilnya menggunakan pengurai HTML . Jika Anda menghilangkan agen pengguna, maka Anda mendapatkan kembali 403. Jika Anda berbohong di agen pengguna dan mensimulasikan browser web (misalnya Chrome atau Firefox), maka Anda mendapatkan respons HTML yang jauh lebih besar yang membuang-buang bandwidth dan kinerja.
Berikut adalah contoh awal menggunakan Jsoup sebagai parser HTML:
sumber
Untuk mencari google menggunakan API, Anda harus menggunakan Google Custom Search , menggores halaman web tidak diperbolehkan
Di java, Anda dapat menggunakan Pustaka Klien API Penelusuran Khusus untuk Java
Ketergantungan maven adalah:
Contoh kode pencarian menggunakan Google CustomSearch API Client Library
Seperti yang Anda lihat, Anda perlu meminta kunci api dan menyiapkan id mesin pencari sendiri, cx .
Saat ini (tanggal jawaban) Anda mendapatkan 100 panggilan api per hari secara gratis, lalu google ingin membagikan keuntungan Anda.
sumber
Dalam Terms of Service google kita bisa membaca:
5.3 Anda setuju untuk tidak mengakses (atau mencoba mengakses) Layanan apa pun dengan cara apa pun selain melalui antarmuka yang disediakan oleh Google, kecuali jika Anda diizinkan secara khusus untuk melakukannya dalam perjanjian terpisah dengan Google. Anda secara khusus setuju untuk tidak mengakses (atau mencoba mengakses) Layanan apa pun melalui sarana otomatis apa pun (termasuk penggunaan skrip atau perayap web) dan harus memastikan bahwa Anda mematuhi petunjuk yang ditetapkan dalam file robots.txt yang ada di Layanan. .
Jadi saya kira jawabannya adalah Tidak. Lebih dari SOAP API tidak lagi tersedia
sumber
Persyaratan Layanan Google telah sedikit dilonggarkan pada bulan April 2014. Sekarang dinyatakan:
"Jangan menyalahgunakan Layanan kami. Misalnya, jangan mengganggu Layanan kami atau mencoba mengaksesnya menggunakan metode selain antarmuka dan instruksi yang kami berikan."
Jadi bagian tentang "sarana otomatis" dan skrip sudah hilang sekarang. Ini jelas masih bukan cara yang diinginkan (oleh google) untuk mengakses layanan mereka, tapi saya pikir itu sekarang secara resmi terbuka untuk interpretasi tentang apa sebenarnya "antarmuka" itu dan apakah itu membuat perbedaan tentang bagaimana tepatnya HTML yang dikembalikan diproses ( diberikan atau diurai). Bagaimanapun, saya telah menulis perpustakaan kemudahan Java dan terserah Anda untuk memutuskan apakah akan menggunakannya atau tidak:
https://github.com/afedulov/google-web-search
sumber
Memang ada API untuk mencari google secara terprogram. API tersebut disebut pencarian kustom google. Untuk menggunakan API ini, Anda memerlukan kunci API Pengembang Google dan kunci cx. Prosedur sederhana untuk mengakses pencarian google dari program java dijelaskan di blog saya.
Sekarang mati, ini link Wayback Machine .
sumber
Sebagai alternatif jawaban BalusC karena sudah tidak digunakan lagi dan Anda harus menggunakan proxy, Anda dapat menggunakan paket ini. Contoh kode:
Perpustakaan di GitHub
sumber
Mengingat perubahan KL tersebut tahun lalu, kami membangun API yang memberikan akses ke pencarian Google. Itu hanya untuk penggunaan kami sendiri tetapi setelah beberapa permintaan kami memutuskan untuk membukanya. Kami berencana menambahkan mesin telusur tambahan di masa mendatang!
Jika ada yang mencari cara mudah untuk menerapkan / memperoleh hasil pencarian, Anda bebas mendaftar dan mencoba REST API: https://searchapi.io
Ini mengembalikan hasil JSON dan seharusnya cukup mudah untuk diterapkan dengan dokumen terperinci.
Sayang sekali Bing dan Yahoo berada jauh di depan di Google dalam hal ini. API mereka tidak murah, tapi setidaknya tersedia.
sumber
Hanya alternatif. Pencarian google dan parsing hasil juga dapat dilakukan dengan cara yang umum menggunakan HTML Parser seperti Jsoup di Java. Berikut ini adalah tautan ke contoh yang disebutkan.
https://www.codeforeach.com/java/example-how-to-search-google-using-java
sumber