Edited at

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検索結果画面の仕様が変わると、動作しなくなることが予想されます。

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