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.

WayToDoor
sumber
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
6
Jika Anda tergoda: ingatlah Anda tidak dapat menguraikan HTML dengan regex
Luis Mendo

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

digital Trauma
sumber
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]}
kirbyfan64sos
sumber
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)
chuy
sumber
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

Peluruhan Beta
sumber
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 ]
kucing
sumber