GoogleCodeSearchで指定URL以下のコードを検索する

はこべにっき# - GoogleCodeSearchでブログ上のコードを表示で触れたように、GoogleCodeSearchで、あるURL以下のソースコードを取得するのは少々メンドウです。

しかし、少し検索クエリを工夫すると、そこそこ正確にあるURI以下のソースコードを見つけることができます。たとえば、以下のようなキーワードを用いてGoogleCodeSearchで検索すると、このブログの記事を見つけることができます。

^hakobe932/ package:"http://d.hatena.ne.jp"

検索結果を見ると、このブログのコードが表示されているのがわかります。packageでドメインをしぼるのと、正規表現を用いてURLパス以外がマッチしないように、表現を限定しています。

この機能が簡単に利用できるようにブックマークレットを作ってみました。Google Code Search by URIで公開しています。現在ブラウザで表示しているURL以下のコードをGoogleCodeSearchで表示します。使ってみて下さい。

CGIが裏で走っていますが、ちょっとURL整形してリダイレクトしてるだけなのでJavascriptとかでも作れそうですね。

GoogleCodeSearchは他に、XMLで検索結果を出力できるので、プログラム内で利用することも可能です。くわしくは、Google Code Search Data API Overviewに記載があります。

Google Code Search by URIでも、ちょっと使ってみています。URLを入力して、Seachを押すとXMLから情報を取得して表示してみています。

コード本体はXMLに入っていないので、強引に抽出する必要があります。私は、GoogleCodeSearchのコード本体の載っているURLを引数にとる、以下のような関数を作って、抽出しました。

use URI;
use Web::Scraper;
sub extract_code {
    my ($url) = @_;

    my $scraped = scraper {        
        process '//td[@width="100%"]/pre', 'code' => 'TEXT';
        process '//span[@class="a"]', 'info[]' => 'TEXT';
        result 'code', 'info';
    }->scrape(URI->new($url));
    my $result = {
        url        => $scraped->{info}->[1],
        google_url => $url,
        code       => $scraped->{code},
        language   => $scraped->{info}->[-1],
    };

    return $result;
}

やはり、Web::Scraper便利便利。

公開されているAPIだけでもわりと使えそうですね。ブログ記事上のコード抽出はGoogleCodeSearchに任せることができそうです。クロール対象に入ってなさそうなサイト(nowaとか)も結構あるのがちょっ難点ですが。

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy