Code Golf:Googleの結果の解析


16

Googleで何かを検索すると、結果ページ内で、ユーザーは結果の最初のページの緑色のリンクを見ることができます。

可能な限り短い形式で、バイト単位で、任意の言語を使用して、stdoutへのリンクをリストの形式で表示します。スタック交換クエリの最初の結果の例を次に示します。

画面キャプチャ

入力:

選択:URL(www.google.com/search?q=stackexchange&ie=utf-8&oe=utf-8)または単にstackexchange

出力:

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

ルール:

  • 結果がhttps://www.google.comの検索と同じである限り、URL短縮サービスまたは他の検索ツール/ APIを使用できます。

  • プログラムにWebブラウザーを開くなどの副作用があり、暗号化されたGoogle html / jsページがレンダリング時に読み取られる場合は問題ありません。

  • ブラウザのプラグイン、ユーザースクリプトを使用できます...

  • stdoutを使用できない場合は、たとえばを使用して画面に印刷します。ポップアップまたはjavascriptアラート!

  • 終了/または開始http(s)://は不要です

  • 他のリンクは表示しないでください

  • 最短コードが勝ちます!

  • 幸運を !

編集:このゴルフは07/08/15を終了します。


google.frを使用しているので、それも使用する必要がありますか?
ベータ崩壊

必要なGoogleを使用できます。私はフランス人なので、.frを使用しましたが、.comまたは.anythingを使用できます:)重要ではありません
-WayToDoor

また、短縮URL gogle.deも問題ありませんか?
ベータ崩壊

結果がgoogle.comの検索と同じである限り、URL短縮サービスまたは他の検索ツール/ APIを使用できます。そのため、はい
WayToDoor

回答:


17

Bash + grep + lynx、38

Webブラウザを開くことができるので、次を使用しますlynx

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

grep使用の代わりに@manatworkに感謝しますsed

URL全体をパラメーターとして渡します。

$ ./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
$ 

これは同じリストを提供します:

ここに画像の説明を入力してください


便利ですまあ:D
ベータ崩壊

3
sed良い。sed長いです。GNUを試してくださいgrepgrep -Po '(?<=d:)[^&]+'
manatwork

@manatworkはい、もちろんです-ありがとう!
デジタル外傷

1
回答のタイトルはコピーペーストされましたか?;)bashlynxまたはsed(そして今)のどれgrepもcoreutilsの一部ではありません。
マナトワーク

3
あなたもできると信じています:(lynx -dump $1|grep -Po 'd:\K[^&]+'テストなし)
-Jarmex

4

ルビー、91 77バイト

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

すべてがなければ短くなりrequireます。ああ!!! 編集:だから、結局、私 2番目の必要ありません!それを指摘してくれた@manatworkに感謝します。

古いバージョン(役に立たないrequire):

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

ルールは、長い間、あなたがあまりにもそれらを数えるほどのコマンドラインオプションの使用を許可:pastebin.com/PnpjnXjiは(あなたはこれが不公平なスタイルであると感じた場合は、コードブロックの変化のみを使用して自由に感じる。)
manatwork

明示的にする必要がありますかrequire'uri'?2.1.2では、URIopen-uriを要求した後にモジュールが使用可能になります。
マナトワーク

@manatworkありがとうございます!更新しました。
kirbyfan64sos

私の好奇心のために:ペーストビンの代替案のようにコードブロックを変更しない理由は何ですか?(もちろん、それがあなたを
妨げている

@manatworkする必要がありますが、現時点ではバイト数を把握するのが面倒でした。:)
kirbyfan64sos

4

Wolfram言語(Mathematica)、135

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

より読みやすい:

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

スペースは本当に必要ですか?それらがなければ、136バイトを取得します
kirbyfan64sos

まったく必要ありません...私は本当にこれを強化する必要があります。
chuy15年

これを短くするためにこの答えのようなことをすることができますか?
デジタル外傷

3

Python 3、141バイト

Digital Traumaの答えに近いところはありませんが、正規表現を解決するのは楽しかったです: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))))

入力の場合http://www.google.com/search?q=stackexchange&ie=utf-8&oe=utf-8、プログラムの出力:

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/

grcのヒントを実装します


本当に使う必要があります__import__か?
ckjbgames

また、の[x for x in spam]代わりに構造を使用しますmap。これにより、かなりのバイト数を節約できます。
ckjbgames

2

係数、31バイト

このためのライブラリがあります。

[ google-search [ url>> ] map ]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.