Google検索結果の一覧をCSVでダウンロードするブックマークレット

Google検索結果の一覧をCSVでダウンロードするブックマークレット:


Googleの検索結果を手軽に一覧でCSV保存したい

Google検索はとても便利なので、日常的に利用しているのですが、

検索結果をまとめて一覧化したいことがありますよね。

検索画面に表示されるサイト名やページタイトル、URLをCSVファイルとして一覧で取得できれば、

ExcelやNumbers、Calcなどで使えて便利です。

スクレイピングやAPIで取得するなどの方法もありますが、

個人で利用するには、簡便に取得できれば十分でしたので、

ブラウザから誰でも利用できる、ブックマークレットを作りました。


使い方

ブラウザで新しいブックマークを作り、次の内容をURL欄に貼り付けます。

ブックマークの名前は、Google検索結果CSVダウンロードなどで良いでしょう。

Googleの検索結果画面で、登録したブックマークをクリックすると動作します。

javascript:(()=>{const b=d=>'"'+d.map(g=>g.replace(/"/g,'""')).join('","')+'"',c=new Blob([new Uint8Array([239,187,191]),[b(['href','decoded','title','breadcrumb','date','description'])].concat(Array.from(document.querySelectorAll('div.rc')).map(d=>{const g=d.querySelector.bind(d),h=g('div.r a').href,i=g('div.s span.f'),j=g('div.s span.st');let k=h;try{k=decodeURI(h)}catch(l){}return b([h,k,g('div.r h3').innerText,g('div.r cite').innerText,i?i.innerText.replace(' - ',''):'',j?i?j.innerText.replace(i.innerText,'').trimLeft():j.innerText:''])})).join('\n')],{type:/Chrome|Firefox/.test(navigator.userAgent)?'text/csv':'application/octet-stream'});if(navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(c,document.title+'.csv');else{const d=URL.createObjectURL(c);location.href=d,setTimeout(()=>URL.revokeObjectURL(d),1e3)}})() 
ページをブックマークしておき、編集画面を選んだ後、URL欄にペーストするのがコツです。


動作イメージ

Google Chromeのブックマークツールバーを表示させている場合のイメージです。

Google検索結果画面で、ブックマークを選ぶと、CSVファイルがダウンロードされます。


検索結果画面でブックマークを選択.png


ダウンロードしたCSVファイルはそのまま開けます。


CSVの表示.png



保存されるCSV

UTF-8でエンコードされています。

Excel、Numbers、CalcやGoogle Spreadsheetでそのまま開けます。

ヘッダ 説明 空文字可能性 具体例
href URL NO https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%AC%E3%83%83%E3%83%88
decoded decodURI()したURL NO https://ja.wikipedia.org/wiki/ブックマークレット
title サイト名 or ページ名 NO ブックマークレット - Wikipedia
breadcrumb パンくずの表示 NO https://ja.wikipedia.org/wiki/ブックマークレット
date 更新日 YES 2019/1/15
description ページの概要 YES ブックマークレット (Bookmarklet) とは、ユーザーがウェブブラウザのブックマークなどから起動し、なんらかの処理を行う簡易的なプログラムのことである。携帯電話のウェブブラウザで足りない機能を補ったり、ウェブアプリケーションの処理を起動する為に使 ...


対象ブラウザ

最新のブラウザを利用してください。


動作確認結果

2019年1月15日時点

ブラウザ バージョン 動作
Google Chrome 71.0.3578.98 OK
Firefox 64.0.2 OK
Safari 12.0.2 OK

ただし、unknown.dmsというファイル名のバイナリとしてダウンロードされるので、自分で拡張子を変更するか、開くアプリケーションを選択する必要があります。
Edge 42.17134.1.0 OK
Internet Explorer 11.472.17134.0 NG

今後も対応しません。


Safariでダウンロードしたファイル unknown.dms の開き方

  1. Finderでダウンロードフォルダを開きます。


    Finderでダウンロードフォルダを開く
  2. unknown.dms ファイルを選択し、名前をタップします。


    unknown.dmsファイルを選択する
  3. unknown.csv に書き換えます。


    unknown.csvに書き換える
  4. ダイアログが表示されたら、「".csv"を使用」を選びます。


    ダイアログが表示されたらcsvを使用を選ぶ.png
  5. 変更されたら、普通に開くことができるようになります。


ソースコード

ブックマークレット用に変換する前のソースコードです。

(() => { 
  const convert = row => '"' + row.map(s => s.replace(/"/g, '""')).join('","') + '"' 
 
  const blob = new Blob([ 
    new Uint8Array([0xEF, 0xBB, 0xBF]), 
    [ 
      convert([ 
        'href', 
        'decoded', 
        'title', 
        'breadcrumb', 
        'date', 
        'description' 
      ]) 
    ].concat(Array.from(document.querySelectorAll('div.rc')).map(rc => { 
      const $ = rc.querySelector.bind(rc) 
      const a = $('div.r a').href 
      const f = $('div.s span.f') 
      const st = $('div.s span.st') 
 
      let decoded = a 
      try { 
        decoded = decodeURI(a) 
      } catch (e) {} 
 
      return convert([ 
        a, 
        decoded, 
        $('div.r h3').innerText, 
        $('div.r cite').innerText, 
        f ? f.innerText.replace(' - ', '') : '', 
        st ? (f ? st.innerText.replace(f.innerText, '').trimLeft() : st.innerText) : '' 
      ]) 
    })).join('\n') 
  ], { 
    type: /Chrome|Firefox/.test(navigator.userAgent) ? 'text/csv' : 'application/octet-stream' 
  }) 
 
  if (navigator.msSaveOrOpenBlob) { 
    navigator.msSaveOrOpenBlob(blob, document.title + '.csv') 
  } else { 
    const url = URL.createObjectURL(blob) 
 
    location.href = url 
 
    setTimeout(() => URL.revokeObjectURL(url), 1000) 
  } 
})() 


免責

Google検索結果画面の仕様が変わると、動作しなくなることが予想されます。

その際にはご容赦ください。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)