SE::Google::Images - Google画像スクレイパー

スクレイパーの概要
Google画像検索結果のスクレイパーです。SE::Google::Imagesスクレイパーを使用することで、画像リンクのデータベースや、その後の利用にすぐに使える画像を取得できます。Googleの検索窓に入力するのと同様の形式でクエリを使用できます。
A-Parserの機能により、Googleスクレイパーの設定を保存して後で再利用したり(プリセット)、スクレイピングのスケジュールを設定したりすることが可能です。自動クエリ増殖、ファイルからのサブクエリの代入、英数字の組み合わせやリストの総当たりなどを使用して、最大限の結果を得ることができます。
内蔵された強力なテンプレートエンジン Template Toolkit により、結果に必要なロジックを適用し、JSON、SQL、CSVを含む様々な形式でデータを出力するなど、必要に応じた形式と構造で結果を保存できます。
スクレイパーの活用事例
リンクによる画像のダウンロード
A-Parserではタスクのチェーン(連携)が可能です。最初のタスクが完了すると2番目のタスクが開始され、最初のタスクから得られたリンクを2番目のタスクのクエリとして使用できます。
サンプルをダウンロード
eJyNVstS2zAU/ZWOJovQBsdZdOMNE2jT0qGEQliFdEaNb4xAlowkE1KTf++V7PiR
GpOdJd2n7jnHyoih+lFfKdBgNAnmGUncNwnINykjDh/OYxrBhy9yLbikISgyIAlV
GpQ1n5Obr0GQWwaBM9VoEMKKptyQQUbMJgEMJp9BKRYCHrIQ14mSLxsFRjHn8Ex5
as1Gvk+2HV4YfylTYSqXUYd5KGPKRC38er32Ilest5RxVyauam5dhhE/0PC+bgii
y1Szv3Bg1KXk8tBSFYvujT7Q2G0fZopYSAyLm+aLxYAgkhAFeiJVTC2iesnIK+BV
Ht7QZ5hJPFwxDtX2BFeXNLaxeiE1YE+9lQvUP/LMi41Aw5AZJgXleQYLyCrrrWBP
rhaNIBMR2uPSwm2icPTYILggdnOzq3BOem5NMEzq/H/lPiRYUa5hQDSWO6FYTLh/
wgwoaqSaJrYm3M+IFGPOL+AZeGXm4p+mjCOV9HiFTueFY7vJ9L8Y27LFeiqcyVph
DWUUtzqd/qy8QnkhI0uLP9g3ZzEzuNZnjk8B8XHzESAp7+1S4k4sFZRpjEqhTI6a
kYCw86+mNk6qrUYXjck0N5dSrFg0LTC1s0zFDIVpKs5knHCwbZFcXZpKlGq4rgAz
1sVQ7KIsdz/UmUto72GnUsRIyfWPm7zwRDHE42dbbozXWq+huNol5fz2+qJRXYUv
x0rHjiUCN5IIJ+zJ8qeum5dgguD7bHbVlEsFEby4CMKAMMeWcoH38YTZ5of9RESv
DwmcRK8RWx25i0f7Wc5LZjmhFN0UxLGN5SfLVBsZ5zdVTstqElA3iN1WEWjFaY2h
lhaWK66FHcGFFFDFR3YaNw/poOI0Qeh6ppxsuV2RRUgDTynlTa2oeO9a1sOckZ5I
4+NeVnyjwdazapKHbUGLSDl/A+Rt+G2VhkOQ0wlAv+KckO8K1r4SvoGyOqjaJRb1
krYQMCNapmppw+QiZ3Fvh2uvkywGJfaG/fnv4eLT0d2d1z8JmpDrtWCuAEHuvl0M
qidEG2VbpGJPav02ISpZ2aLAfp17+3RuKJj/hgjt/zPcuN5TdL9bzfePG0rub9v0
xe/4H7XrZNePwK//BGxCN4PQvpkW5SOufPplbU+5IEO3SqpwiesHfZX7WpQXNphV
O+aPtv8AjbCG+g==
収集されるデータ
- 画像のリンク、アンカー、スニペット
- ソースページへのリンク
- プレビューへのリンク
- 画像の幅と高さ
- 画像のタイプ
- タグのリスト
機能
- Googleが提供する最大結果数(検索結果100件×10ページ)をスクレイピング可能
- 検索対象国、ドメイン、結果の言語、Googleインターフェース言語の選択をサポート
- 期間指定の検索をサポート
- サイズ、色、タイプ、使用権によるフィルタ指定が可能
- ReCaptcha2への対応をサポート
ユースケース
- 自身のブログを充実させるための画像収集
- アバター用データベースの収集
クエリ
クエリには、以下のような検索フレーズを指定する必要があります:
Waterfall
Speak in english
Cats and dogs
cars
クエリの置換
クエリを増殖させるために内蔵マクロを使用できます。例えば、非常に大規模なフォーラムのデータベースを取得したい場合、複数の言語でいくつかの主要なクエリを指定します:
forum
フォーラム
foro
论坛
クエリ形式で a から zzzz までの文字の総当たりを指定すると、このメソッドにより検索結果を最大限にローテーションさせ、多くの新しいユニークな結果を得ることができます:
$query {az:a:zzzz}
このマクロは、元の検索クエリごとに 475254 個の追加クエリを生成し、合計で 4 x 475254 = 1901016 個の検索クエリになります。驚異的な数字ですが、A-Parserにとっては全く問題ありません。毎分 2000 クエリの速度であれば、このタスクは約 16 時間で処理されます。
結果の出力例
A-Parserは内蔵のテンプレートエンジン Template Toolkit により柔軟な結果のフォーマットをサポートしており、任意の形式や、CSVやJSONなどの構造化された形式で結果を出力できます。
デフォルト出力
結果フォーマット:
$serp.format('$link\n')
結果の例:
https://techcrunch.com/wp-content/uploads/2015/04/codecode.jpg
https://specials-images.forbesimg.com/imageserve/5f302109ffad89f9130e07db/960x0.jpg?cropX1=0&cropX2=4800&cropY1=243&cropY2=2943
https://victoria.mediaplanet.com/app/uploads/sites/102/2019/07/mainimage-26.jpg
https://inteng-storage.s3.amazonaws.com/img/iea/9lwjAVnM6E/sizes/ocde_resize_md.jpg
https://miro.medium.com/max/11520/0*Jy3heMl_yP_fQwMO
https://cdn-images.welcometothejungle.com/5DDbrp9_kdlw05Z0hzc7kYEpaaruHhUUWJqs-nW1o8k/rs:auto:980::/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy9jYXRlZ29yeS9jb3Zlci8yNjYwLzE1NDg4My9jb2xsZWN0aW9uX2NhdGVnb3J5X2JlaGluZF90aGVfY29kZS5qcGc
https://code.org/shared/images/social-media/codeorg2020_social.png
https://miro.medium.com/max/12032/0*ghyQGW_ZCFN_afQ0
https://www.ionos.com/digitalguide/fileadmin/DigitalGuide/Teaser/code-editoren-t.jpg
CSVテーブルへの出力
結果フォーマット:
[% FOREACH item IN serp;
tools.CSVline(query, item.link, item.width, item.height, item.page, item.thumb);
END %]
結果の例:
code,https://techcrunch.com/wp-content/uploads/2015/04/codecode.jpg,3888,2592,https://techcrunch.com/2016/05/10/please-dont-learn-to-code/,https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTda13SHf3DRDIZLWnKwu1HLr0JHXzs8QtiQs98Qc5GyEdD9JuHtdk9B8Qko_n-PdDT39k&usqp=CAU,jpg
code,https://specials-images.forbesimg.com/imageserve/5f302109ffad89f9130e07db/960x0.jpg?cropX1=0&cropX2=4800&cropY1=243&cropY2=2943,960,540,https://www.forbes.com/sites/enriquedans/2020/08/09/could-the-no-code-movement-put-programmers-out-of-ajob/,https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSyHw0ZZT5tdDwR4UrT0YNui_R-hKHUCgEYBhNKmTRyKRyZ5XQppBVbYfxa9Tds8Zhx5CI&usqp=CAU,jpg
code,https://victoria.mediaplanet.com/app/uploads/sites/102/2019/07/mainimage-26.jpg,1200,630,https://www.educationandcareernews.com/stem-education/5-reasons-students-should-learn-to-code/,https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQCPak-ygQMNGgIy404t7FticAgqunQe72andfS-QRpaRAno2oJ_qmOshBp85jhLuekQGs&usqp=CAU,jpg
code,https://inteng-storage.s3.amazonaws.com/img/iea/9lwjAVnM6E/sizes/ocde_resize_md.jpg,744,389,https://interestingengineering.com/the-best-ways-to-learn-how-to-code,https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT90pAbc4h3wggUFQ20JsRJ_XeKAZ0wurtRsOO2rKsUaW4cKx61SntGDg8cpqZrZEcP-Ls&usqp=CAU,jpg
code,https://miro.medium.com/max/11520/0*Jy3heMl_yP_fQwMO,4000,2666,https://medium.com/dealeron-dev/how-to-write-readable-code-8434c58748a1,https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcScySt4wtbwVa_vJIqVVmxkEF943I48xpvWVEbmqOd-PWFgpD1CBCyntWST12MKN7KLrnI&usqp=CAU,
code,https://cdn-images.welcometothejungle.com/5DDbrp9_kdlw05Z0hzc7kYEpaaruHhUUWJqs-nW1o8k/rs:auto:980::/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy9jYXRlZ29yeS9jb3Zlci8yNjYwLzE1NDg4My9jb2xsZWN0aW9uX2NhdGVnb3J5X2JlaGluZF90aGVfY29kZS5qcGc,980,659,https://www.welcometothejungle.com/en/collections/behind-the-code,https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQOQYtxNtGy1qVMxUO42XWb75nYjE_w6fMlpJNaDxbro0ZorYIcfS0EPhmTEzhSyHBpvvo&usqp=CAU,
code,https://code.org/shared/images/social-media/codeorg2020_social.png,1200,630,https://code.org/,https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRB6y-6WBM9qNNlVnSnQtFPoHSLh-W0koeQvT_iKLmHasR-h7fPe7Y-U2327bZaRcZV1jk&usqp=CAU,png
SQL形式での保存
結果フォーマット:
[% FOREACH serp;
"INSERT INTO serp VALUES('" _ query _ "', '"; link _ "', '"; page _ "', '"; thumb _ "')\n";
END %]
結果の例:
INSERT INTO serp VALUES('code', 'https://techcrunch.com/wp-content/uploads/2015/04/codecode.jpg', '', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTda13SHf3DRDIZLWnKwu1HLr0JHXzs8QtiQs98Qc5GyEdD9JuHtdk9B8Qko_n-PdDT39k&usqp=CAU')
INSERT INTO serp VALUES('code', 'https://specials-images.forbesimg.com/imageserve/5f302109ffad89f9130e07db/960x0.jpg?cropX1=0&cropX2=4800&cropY1=243&cropY2=2943', '', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSyHw0ZZT5tdDwR4UrT0YNui_R-hKHUCgEYBhNKmTRyKRyZ5XQppBVbYfxa9Tds8Zhx5CI&usqp=CAU')
INSERT INTO serp VALUES('code', 'https://victoria.mediaplanet.com/app/uploads/sites/102/2019/07/mainimage-26.jpg', '', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQCPak-ygQMNGgIy404t7FticAgqunQe72andfS-QRpaRAno2oJ_qmOshBp85jhLuekQGs&usqp=CAU')
INSERT INTO serp VALUES('code', 'https://code.org/shared/images/social-media/codeorg2020_social.png', '', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRB6y-6WBM9qNNlVnSnQtFPoHSLh-W0koeQvT_iKLmHasR-h7fPe7Y-U2327bZaRcZV1jk&usqp=CAU')
INSERT INTO serp VALUES('code', 'https://cdn-images.welcometothejungle.com/5DDbrp9_kdlw05Z0hzc7kYEpaaruHhUUWJqs-nW1o8k/rs:auto:980::/q:85/czM6Ly93dHRqLXByb2R1Y3Rpb24vdXBsb2Fkcy9jYXRlZ29yeS9jb3Zlci8yNjYwLzE1NDg4My9jb2xsZWN0aW9uX2NhdGVnb3J5X2JlaGluZF90aGVfY29kZS5qcGc', '', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQOQYtxNtGy1qVMxUO42XWb75nYjE_w6fMlpJNaDxbro0ZorYIcfS0EPhmTEzhSyHBpvvo&usqp=CAU')
INSERT INTO serp VALUES('code', 'https://inteng-storage.s3.amazonaws.com/img/iea/9lwjAVnM6E/sizes/ocde_resize_md.jpg', '', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT90pAbc4h3wggUFQ20JsRJ_XeKAZ0wurtRsOO2rKsUaW4cKx61SntGDg8cpqZrZEcP-Ls&usqp=CAU')
INSERT INTO serp VALUES('code', 'https://miro.medium.com/max/11520/0*Jy3heMl_yP_fQwMO', '', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcScySt4wtbwVa_vJIqVVmxkEF943I48xpvWVEbmqOd-PWFgpD1CBCyntWST12MKN7KLrnI&usqp=CAU')
結果をJSONにダンプ
共通結果形式:
[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;
obj = {};
obj.query = query;
obj.images = [];
FOREACH item IN p1.serp;
obj.images.push({
width = item.width
height = item.height
link = item.link
pagelink = item.pagelink
thumb = item.thumb
});
END;
obj.json %]
開始テキスト:
[
終了テキスト:
]
結果の例:
[{
"images": [
{
"link": "https://techcrunch.com/wp-content/uploads/2015/04/codecode.jpg",
"width": 3888,
"page": "https://techcrunch.com/2016/05/10/please-dont-learn-to-code/",
"thumb": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTda13SHf3DRDIZLWnKwu1HLr0JHXzs8QtiQs98Qc5GyEdD9JuHtdk9B8Qko_n-PdDT39k&usqp=CAU",
"height": 2592
},
{
"link": "https://specials-images.forbesimg.com/imageserve/5f302109ffad89f9130e07db/960x0.jpg?cropX1=0&cropX2=4800&cropY1=243&cropY2=2943",
"width": 960,
"page": "https://www.forbes.com/sites/enriquedans/2020/08/09/could-the-no-code-movement-put-programmers-out-of-ajob/",
"thumb": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSyHw0ZZT5tdDwR4UrT0YNui_R-hKHUCgEYBhNKmTRyKRyZ5XQppBVbYfxa9Tds8Zhx5CI&usqp=CAU",
"height": 540
},
{
"link": "https://victoria.mediaplanet.com/app/uploads/sites/102/2019/07/mainimage-26.jpg",
"width": 1200,
"page": "https://www.educationandcareernews.com/stem-education/5-reasons-students-should-learn-to-code/",
"thumb": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQCPak-ygQMNGgIy404t7FticAgqunQe72andfS-QRpaRAno2oJ_qmOshBp85jhLuekQGs&usqp=CAU",
"height": 630
},
],
"query": "code"
}]
「Prepend text」と「Append text」のオプションをタスクエディタで利用するには、「More options」を有効にする必要があります。
利用可能な設定
| パラメータ | デフォルト値 | 説明 |
|---|---|---|
| Pages count | 10 | スクレイピングするページ数 |
| Google domain | www.google.com | スクレイピング対象のGoogleドメイン。すべてのドメインをサポート |
| Results language | Auto (Based on IP) | 結果の言語選択(lr= パラメータ) |
| Search from country | Auto (Based on IP) | 検索を実行する国の選択(地域依存検索、gl= パラメータ) |
| Interface language | English | Googleインターフェース言語の選択。スクレイパーとブラウザの結果を最大限一致させるために使用 |
| Size | Any size | 画像のサイズ選択 |
| Color | Any color | 画像の色選択 |
| Usage rights | Not filtered by license | 画像の使用ライセンス |
| Type | Any type | 画像のタイプ選択 |
| Serp time | All time | 検索結果の期間(時間依存検索、tbs= パラメータ) |
| Util::ReCaptcha2 preset | default | Util::ReCaptcha2 スクレイパーのプリセット。事前に Util::ReCaptcha2 スクレイパーを設定(アクセスキーやその他のパラメータの指定)し、作成したプリセットをここで選択する必要があります。 |
| Safe search | Auto (default) | 「Safe search」の有効化 |
