スクレイピングをブロックされるの巻

2019/3/19 [16:25:45] (火) 天気

ISBNをキーに本の情報(タイトル、著者、書影)を求めて三千里、だ。


あらすじその1

かれこれ15年以上、ずっと利用させてもらっていたAmazon(PA-API)の利用条件が変更となり、うちのように売上のほとんどないサイトだと利用するのが難しくなった。

状態を見ていると、使えたり使えなかったり、というかほとんど使えないんだけど、時々使えることがある、といった感じ。その条件がよくわからない。


あらすじその2

PA-APIがそんな状態なもんだから、Amazonの商品ページをスクレイピングしてのデータ取得に変更。すんなりデータが取れた、と思う間もなく(ほとんど7日以内)スクレイピングがAmazonにブロックされてしまった。

データが取れなくなったんで、取得するHTMLを眺めたら、自動アクセスしているようだけどAPIがあるからそちらを使いなさい、というコメントが入っていた。

そもそもアマゾンは規約でスクレイピングが禁止されてるので、やっちゃいかんのだ。


てことでamazonについては、ほぼ利用できなくなった。

(アフィリエイトタグ、リンクやアカウントには問題はない。データベースとしてAmazonが使えなくなったということ。念のため)


何度も書いてるように4月になったら国立国会図書館がAPIを公開するので乗り換えを検討。

ただ、どんなAPIなのかどんなデータが使えるのか、実際に公開されてから確認となる。

いま公開していて、ユーザーさんが利用してくれているサイトもあり、いままさにどうするのかということで、繋ぎでいいのでなんとかしなければならない。


AmazonのPA-APIが不定でたまにしか使えない(たまに使えるからかえって未練たらたらとなる)

Amazonに対するスクレイピングは規約も不可。


ということで、その場しのぎのでっちあげ、というわたしの得意技。

AmazonのAPIを使ってページを公開しているサイトをピックアップして、そちらをスクレイピングすることにした。

アマゾン本家ではなくAPIを利用しているコバンザメからデータを持ってくる便所バエ作戦だ。


本のデータを取得するためだけに、文字通り機械的にアクセスするわけだから、そのサイトにとっては何の利益にもならない、ただの無駄なアクセスとなる。amazonのようにインフラも強固巨大なサイトならともかく、規模的に小さなサイトだとちょっとした負荷も迷惑でしかない。

さすがに申し訳ない。

のべつ幕なしリクエストを投げるようなことを避けるために自鯖内で期間限定のキャッシュすることにした。


図式的には

・本の情報が欲しい時はまず自鯖のキャッシュを確認

・キャッシュされていればそれを利用

・キャッシュになければPA-APIを利用してデータ取得を試す

・PA-APIでデータ取得できればそれを利用。取得したデータをキャッシュ

・利用制限でデータ取得できなかったら他サイトをスクレイピング。

・スクレイピングでデータ取得できればそれを利用。取得したデータをキャッシュ

てことにした。


キャッシュするのは、ISBN・タイトル・著者の基本3点セット。さらにデータがあれば書影のURL。

本のタイトルや著者をキャッシュすることは問題ないはずだけど、書影(画像)についてはたぶん権利関係がらみで面倒くさいことがあるだろう。

画像をダウンロードして利用するなどもちろんアウト…というかただの犯罪行為。

公開されている書影のURLについては問題ないと思うけど、書影を公開しているサイトと書影(画像)の権利者とでどのような約束があるのか不明で、おそらくずっと同じURLで公開しない。もしかしたらアクセスのたびにURLが変わることも考えられる。なので自鯖でのキャッシュを期間限定とした。



今回のことでちょっと調べてみたら、スクレイピング行為がなにやらマーケティングだのなんだので使われていて、スクレイピングについてのスキルを持っているといろいろ重宝されて優位に立ち回れるとのこと。


いやいや、ちょっと待てよ、だ。

公開されているものとはいえ、他人の著作物から、自分の都合の良いデータだけ切り取ってもってくるのがスクレイピング。そしてそのデータは権利者の意図とは違う使い方をされるのがほとんどだろう。カタカナ言葉でなんかごまかそうとしているけど、単なるタダ乗り行為。


なんちゃら猛々しいんじゃねえのかとか、便所バエの自覚はないのかと昭和老害は思うわけですな。

image

て、オライリーからこんな本まで出てるんだなぁ。ううううむ。ほんまかいな。

PythonによるWebスクレイピング 第2版

『PythonによるWebスクレイピング 第2版』

Ryan Mitchell

<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】