ラッキーだ


8

Google検索の最初の結果のコンテンツを返す最短の関数を記述します(「私は幸運を感じています」)。

例:

lucky('cat');

次のようなものを返す可能性があります:

<!DOCTYPE html>
<html>
  <head>
    <title>Cats are cool</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h1>CAAAAAAAAAAATSSSSSSSSSS!!!!!!!!</h1>
    <p>
      Cats are so cool!
    </p>
  </body>
</html>

回答:


12

バッシュ、46バイト

l()(wget -UM -qO- "gogle.de/search?btnI&q=$1")

他の答えと同じように、私は実際に私は幸運を感じている機能を使用しています。

Gogleは一部のユーザーエージェント(WGet、cURL、Javaなど)をブラックリストに載せていますが、Mは問題なく動作するようです。


なぜgogle.de存在するのですか?

3
タイプミスをキャッチする。googl.de同様に動作します。
— Dennis

2
@professorfishもgogle.com存在します。あいにくgoogl.co.uk、危険な広告サイトにリダイレクトします。
— ベータ崩壊2014年

@BetaDecay不思議なことに、毎回別のページにリダイレクトされます。
— qwr

7

ルビー、79/145

私btnIはこのソリューションのために@ rink.attendant.6からトリックを借りました。Beta Decayを2文字短くしてくれてありがとう。

require'open-uri'
f=->q{URI(URI.escape"http://gogle.de/search?btnI&q="+q).read}

結果ページから最初の結果(145バイト)を実際に取得するソリューションもあります。

require'open-uri'
f=->q{open(URI.extract(URI(URI.escape"http://google.com/search?q=#{q}").read.split('class="r"')[1])[0].split("&amp;")[0]).read}

5

PHP、157 105/87 102/87 100/85

使用する file_get_contents

<?php function l($q){return file_get_contents("https://google.ca/search?btnI&q=".rawurlencode($q));}

検索語にスペースを入れない場合は、87文字のみです。

<?php function l($q){return file_get_contents("https://google.ca/search?q=$q&btnI");}

cURLを使用するオリジナルバージョン

PHP 5.4以降では、短い配列構文を使用できると思います。

<?php function l($q){$ch=curl_init("https://google.ca/search?btnI=1&q=".rawurlencode($q));curl_setopt_array($ch,[19913=>1,52=>1]);return curl_exec($ch);}

それ以外の場合は、通常の配列初期化子162でさらに5文字です。

<?php function l($q){$ch=curl_init("https://google.ca/search?btnI=1&q=".rawurlencode($q));curl_setopt_array($ch,[19913=>1,52=>1]);return curl_exec($ch);}

検索語にスペースを使用できないバージョン:URLエンコードは不要(138):

<?php function l($q){$ch=curl_init("https://google.ca/search?q=$q&btnI=1");curl_setopt_array($ch,[19913=>1,52=>1]);return curl_exec($ch);}
定数を使用してゴルフをしない
<?php
function l($q){
$ch = curl_init("https://google.ca/search?btnI=1&q=" . rawurlencode($q));
curl_setopt_array($ch, array(
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_FOLLOWLOCATION => 1
  ));
return curl_exec($ch);
}

あなたは置き換えることができるはず"https://google.ca/search?q=".rawurlencode($q)."&btnI=1"で"http://google.ca/search?btnI=1&q=".rawurlencode($q)
— NinjaBearMonkey

私の両方の答えに
— 合わせ

特定の理由でSSLを使用していますか?
— デニス

あなたは置き換えることができbtnI=1てbtnI。
— ベータ崩壊2014年

4

C#、183 180 178

C#でコードを書くのはこれが初めてなので、おそらく改善が必要になるでしょう。フィードバックは大歓迎です!

string l(string q){return System.Text.Encoding.UTF8.GetString((new System.Net.WebClient()).DownloadData("https://google.ca/search?btnI&q="+System.Web.HttpUtility.UrlEncode(q)));}

ミニ化されていない

string l(string q) {
    return System.Text.Encoding.UTF8.GetString(
        (new System.Net.WebClient()).DownloadData(
            "https://google.ca/search?btnI&q=" + System.Web.HttpUtility.UrlEncode(q)
        )
    );
}

1
'DownloadString'を使用するだけで、エンコードビットを回避できます。
— Geoff、

3

CJam、40バイト

と思ったので、やっとgメソッドを試してみる

{"gogle.de/search?btnI&q="\S/"%20"*+g}:F

これは、次のFように使用できるメソッド/ブロックを作成します

{"gogle.de/search?btnI&q="\S/"%20"*+g}:F; "cats and dogs"F

これは、CJamで関数が機能する方法です。

オンラインインタープリターでは機能しないため、Java インタープリターをダウンロードして使用する必要があります。

GoogleはすべてのリクエストをJavaユーザーエージェントで拒否するため、追加のフラグでCJamを開始する必要があることに注意してください -Dhttp.agent=M


CJamとあなたに+ 1、Googleに-1。User-AgentがJavaの場合、403を返します。@aditsuがこれを解決してくれることを願っています。
— manatwork 2014年

@aditsu-その計画はありますか?
— オプティマイザ、

2
これは、たとえば-Dhttp.agent=MJavaインタープリターに渡してユーザーエージェントを偽装した場合にのみ機能します。
— デニス

2

Python 3-78

gogle.de簡潔にするために使用します。として実行しf(query)ます。

f=lambda x:__import__("requests").get("http://gogle.de/search?btnI&q="+x).text

クエリにスペースを含める場合は、98文字です。

f=lambda x:__import__("requests").get("http://gogle.de/search?btnI&q="+x.replace(" "," %20")).text
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.