Kode Golf: Memilah-milah hasil google


16

Saat Anda mencari sesuatu di google, di dalam halaman hasil, pengguna dapat melihat tautan hijau, untuk halaman pertama hasil.

Dalam bentuk sesingkat mungkin, dalam byte, menggunakan bahasa apa pun, tampilkan tautan tersebut ke stdout dalam bentuk daftar. Berikut ini adalah contoh, untuk hasil pertama dari permintaan pertukaran stack:

Tangkapan layar

Memasukkan :

Anda memilih: URL ( www.google.com/search?q=stackexchange&ie=utf-8&oe=utf-8) atau hanyastackexchange

Keluaran:

french.stackexchange.com/, stackoverflow.com/, fr.wikipedia.org/wiki/Stack_Exchange_Network, en.wikipedia.org/wiki/Stack_Exchange,...

Aturan:

  • Anda dapat menggunakan penyingkat URL atau alat pencarian / API lainnya asalkan hasilnya akan sama dengan pencarian https://www.google.com .

  • Tidak apa-apa jika program Anda memiliki efek samping seperti membuka peramban web sehingga laman html / js Google yang samar dapat dibaca saat dirender.

  • Anda dapat menggunakan plugin browser, skrip pengguna ...

  • Jika Anda tidak dapat menggunakan stdout, cetak ke layar dengan, misalnya. peringatan popup atau javascript!

  • Anda tidak memerlukan akhir / atau http awal: //

  • Anda seharusnya tidak menunjukkan tautan lain

  • Kode terpendek menang!

  • Semoga berhasil !

EDIT: Golf ini berakhir pada 07/08/15.


Karena Anda menggunakan google.fr, apakah kita harus menggunakannya juga?
Beta Decay

Anda dapat menggunakan google apa pun yang Anda inginkan. Saya orang Prancis, jadi saya menggunakan .fr, tetapi Anda dapat menggunakan .com atau. Apa pun :) Tidak masalah
WayToDoor

Dan URL singkat seperti gogle.debaik-baik saja juga?
Beta Decay

Anda dapat menggunakan penyingkat URL atau alat pencarian / API lainnya asalkan hasilnya akan sama dengan pencarian google.com , jadi ya
WayToDoor

Jawaban:


17

Bash + grep + lynx, 38

Karena kita dapat membuka browser web, maka saya akan menggunakan lynx:

lynx -dump $1|grep -Po '(?<=d:)[^&]+'

(Terima kasih kepada @manatwork untuk greppenggunaan alih-alih sed)

Kami mengirimkan seluruh URL sebagai parameter:

$ ./gr.sh "www.google.com/search?q=stackexchange&ie=utf-8&oe=utf-8"
http://stackexchange.com/
https://en.wikipedia.org/wiki/Stack_Exchange
https://twitter.com/stackexchange
https://play.google.com/store/apps/details?id=com.stackexchange.marvin
https://github.com/StackExchange/StackExchange.Redis
https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/Basics.md
https://www.crunchbase.com/organization/stack-exchange
$ 

Yang memberikan daftar yang sama dengan:

masukkan deskripsi gambar di sini


Yah itu berguna: D
Beta Decay

3
sedbaik. sedpanjang. Coba GNU grep:grep -Po '(?<=d:)[^&]+'
manatwork

@manatwork Ya, tentu saja - terima kasih!
Digital Trauma

1
Apakah judul jawaban ditiru? ;) Tak satu pun dari bash, lynxatau sed(dan sekarang grep) adalah bagian dari coreutils.
manatwork

3
Saya percaya Anda juga dapat melakukan: lynx -dump $1|grep -Po 'd:\K[^&]+'(belum diuji)
Jarmex

4

Ruby, 91 77 byte

require'open-uri';open(gets).read.scan(/ed:(.*?)\+/){|x|puts URI.decode x[0]}

Akan lebih singkat tanpa semua require. ARGH !!! EDIT : Jadi, ternyata, saya tidak perlu persyaratan kedua! Terima kasih kepada @manatwork karena menunjukkannya.

Versi yang lebih lama (dengan yang tidak berguna require):

require'open-uri';require 'uri';open(gets).read.scan(/ed:(.*?)\+/){|x|puts URI.decode x[0]}

Aturan memungkinkan penggunaan opsi baris perintah selama Anda menghitungnya juga: pastebin.com/PnpjnXji (Jika Anda merasa ini tidak adil, silakan gunakan hanya perubahan pada blok kode.)
manatwork

Apakah Anda yakin perlu secara eksplisit require'uri'? Di 2.1.2 saya menggunakan URImodul menjadi tersedia setelah membutuhkan open-uri.
manatwork

@manatwork Terima kasih! Diperbarui.
kirbyfan64sos

Hanya untuk keingintahuan saya: ada alasan untuk tidak mengubah blok kode seperti pada alternatif pastebin saya? (Tentu saja, saya ingin tahu tentang alasan teknis, bukan alasan pribadi, jika itu menahan Anda.)
manatwork

@manatwork saya perlu, tapi saya terlalu malas untuk mengetahui jumlah byte saat ini. :)
kirbyfan64sos

4

Bahasa Wolfram (Mathematica), 135

StringJoin/@(Cases[URLExecute["www.google.com/search",{"q"->#},"XMLObject"],XMLElement["cite",_,l_]:>l,-1]/.XMLElement["b",_,{s_}]:>s)&

lebih mudah dibaca:

StringJoin/@(Cases[
    URLExecute["www.google.com/search",{"q"->#},"XMLObject"], 
    XMLElement["cite",_,l_]:>l,-1] /. 
    XMLElement["b",_,{s_}]:>s)

Apakah ruang itu benar-benar diperlukan? Tanpa mereka, saya mendapatkan 136 byte .
kirbyfan64sos

tidak perlu sama sekali ... Saya benar-benar harus memperketat ini ..
chuy

Bisakah Anda melakukan sesuatu seperti jawaban ini untuk mempersingkat ini?
Digital Trauma

3

Python 3, 141 byte

Tidak ada jawaban Digital Trauma yang dekat, tetapi menyenangkan untuk mengetahui regex: D

import re
print('\n'.join(map(lambda x:x[3:],re.findall('te>http[s]?://\w+\.[a-z]+[](/a-z\.)?]+',__import__("requests").get(input()).text))))

Untuk input http://www.google.com/search?q=stackexchange&ie=utf-8&oe=utf-8output program:

https://en.wikipedia.org/wiki/
https://twitter.com/
https://play.google.com/store/apps/details?id...
https://www.crunchbase.com/organization/
https://www.facebook.com/
https://github.com/

Menerapkan tip grc


Apakah Anda benar-benar perlu menggunakannya __import__?
ckjbgames

Juga, gunakan [x for x in spam]konstruksi sebagai ganti map. Itu akan menghemat banyak byte.
ckjbgames

2

Faktor, 31 byte

Kebetulan ada perpustakaan untuk ini.

[ google-search [ url>> ] map ]
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.