Amazon PA-APIの代わりにスクレイピング
ウチのサイトで売上がなく、AmazonのPA-APIの利用制限に引っかかって使えなくなったのが前号までのあらすじ。
充実した本のデータベースとしてありがたく使わせてもらってたんだけど、Amazonも営利企業だ、売上に貢献できてないのだからやむを得ない。
しかたがないので、Amazonのページをスクレイピング(クロール)、ページを解析して必要な情報を取得することにした。
Amazonが公式に提供してくれるAPIは仕様も明らかにされていて使い勝手がいいし、変更も予告されるので事前準備ができる。
その点スクレイピングは自力でhtmlを解析しなきゃいけないし、サイトのちょっとしたリニューアルのたびに解析のやり直しとなる。て、そのちょっとしたリニューアルなんて頻繁なので追随するのが大変。
APIを使わず、サイトをスクレイピングするメリットなどない。
売上がたってAPIの利用制限を回避できるようになるまでの暫定手段…て、現状、まるで期待できんけど。
とりあえず目先必要なモジュールを書き換え・置き換えたので、忘れないうちにメモ。
わたしが公開しているサイトのほとんど、Amazonから取得する本の情報が使われている。
馬鹿のひとつ覚えで、どれもisbnをキーに本のデータを取得してその中から、タイトル、著者名、レビュー、書影をサイト表示に使っている。また、検索結果を表示させているページもある。
今回APIからスクレイピングに変えることで、検索は止めることにした。
最初はAmazonの検索URLの検索結果からデータを取得しようと思ったんだけど、アマゾンのページを見ればわかるように、検索対象以外の本が、ベストセラーだのオススメだのと入り混んでくる、雑音が多いページなので却下。APIだと雑音はなかったんで、それなりに有意だったのに、このありさまじゃわざわざ実装する意味がない。
てことで、ISBNをキーにして、タイトル、著者名、書影、レビューが取得できればそれでOKとした。
…と、なんだか小難しいことをおおげさに言ってるけど、そんなことは全然なくてAmazonのページURLを見ればなるほど簡単の種明かしだ。
たとえば。
https://www.amazon.co.jp/dp/4575513393
↑『アレルヤ』桜井鈴茂の商品詳細ページ
ページのURLにASIN(4575513393の部分)が使われている。ISBNさえわかればASINに変換してURLにしてリクエストしてやればページのHTMLが取得できる。
あとはHTMLを解析して必要なデータを取ってくればいいだけだ。
13桁のISBNを、Amazonの10桁のASINに変換するネタが2006年の雑記帖に。
「来年からのISBNの13桁に」
https://t2aki.doncha.net/?id=1167061487
この時作ったモジュールが今も現役。
Amazon商品ページのHTMLのどのタグ、どの文章を正規表現で切り取ってるか、など具体的な詳細をここで今書いたところで上記したように明日にも構造が変わってしまうことがありうるんであまり意味がない。
スクレイピングする時のわたしなりの定石というかポイントだけ。
クロールする対象はPCサイトではなくて、スマホ版。
スマホ版の方がHTMLが素直なので解析しやすいから。PC版だとテーブルが邪魔になることが多い。HTML解析のモジュールもあるのでそれを利用すればいいんだろうけど、汎用的なモジュールは、結局は対象サイトに合わせてカスタマイズが必要となる。だったら、最初から解析が比較的ラクなスマホ版を対象にすればいい。
何はなくてもタイトルタグ。
SEOのこともあるので、大きなサイトは、タイトルタグの内容に関しては安直に変更したりしないので信用できる。
Amazonの商品ページで言うと、書名・著者が必ず入っている。ウチ場合、ISBNをキーに欲しいデータはこれだけといってもいいほど。ページ本文(HTML)の解析なんて必要がない。
とはいえ、書影のURLやレビューはHTMLを解析する必要がある。
それには、HTMLの中にあるhタグとページで一意(ユニーク)なidをチェックするだけでほとんどことは足りる。
perlなら欲しいところを
@buf = $contents =~ m!tag(.+)tag!g
で一網打尽
くどいようだけど、スクレイピングはamazonが公式にサポートしてくれるAPIと違う。
APIだと変更などはアナウンスされるのでそれを待ってればいい。でも、スクレイピングしてデータを取ってるとHTMLの変更を検知、追随する必要がある。
ヘルスチェックのスクリプトを書いてクローンで走らせる必要があるなあ。
来月、2019年4月から国立国会図書館で書誌情報の提供、APIでの提供が始まるらしいので、そちらに乗り換えることも考えておこう。
https://www.ndl.go.jp/jp/news/fy2018/190219_01.html
[2019/03/12 04:18:29]
てことなので良い子はマネしないように。
そりゃそだな。公開されているとはいえ、スクレイピングって、他人の著作物から勝手にデータを抜き出して使うわけだから、あまり行儀のよいことじゃない。
解散。
国立国会図書館のAPIに期待…だけど、電子書籍とか書影とか対応してるのか気になるところ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
挿絵の多いくまっこ本『ほしのこ』作成メモ
『まほろば』や『書架にねむる。』などを出されていて、その文章や独自の世界観にファンの多いくまっこさん。
kindle新作『ほしのこ』(近日公開予定!)のEPUB3ファイル作成のお手伝いをしたのでちょっとメモ。
『ほしのこ』の前半に収録されている「ホシノコ」は挿絵と文章が交互にはいる、いわば「絵本」タイプ。とはいえ、kindleの固定レイアウト「児童書」でやるには、後半の「カナとハナ」は小説なのでリフロー型。現状、kindleは混在が無理だし、固定レイアウトは制約があったりいろいろ手強いので(わたしのスキル不足なので)、リフローで行くことにした。
「EPUB3::かんたん電子書籍」でひな形を作成してHTMLで調整。
くまっこさんから届いたテキストを、「かんたん電子書籍作成」に流し込めるようにちょっとマークアップもどきに編集していく。(先頭の目次指定は、EPUBでは別扱いなので外して、挿絵や改ページに注意しながら編集)
出力後に、お預かりしたイラストと差し替える、という方針。扉タイトルを画像で生成・挿絵指定を入れてダミーの挿絵を生成する 「かんたん電子書籍作成で挿絵をつける」 パターンのいわば実践編。
くまっこさんから届いたテキストが向かって左。それを「かんたん電子書籍作成」にアップロードするように編集したものが向かって右です。
(扉タイトル)として扉を画像で生成←目次に入る
(挿絵入る)としてダミー挿絵画像を生成。
おのおの改ページで1ページ扱いとなる。
扉と挿絵以外のところで改ページ指定があったので、そこはダミーで「(小見出し)改ページ用」といれておいた。(改ページをするスタイルをクラス指定してあるけど、目次からはずす方がラクなので)
目次は後でHTMLを直接編集することになる。
「かんたん電子書籍作成」にアップロード(タイトルと著者名も入れる)
ダウンロードしたEPUB3を解凍すると以下の構成になっている
「かんたん電子書籍作成」が作った画像は OEBPS/images/ に入っている。
これをくまっこさんの挿絵にさしかえる。
くまっこさんは几帳面なので、お預かりした画像ファイルは連番で整列させることができる。
「かんたん電子書籍作成」で作る画像は本文の連番と連動しているので整列させることができる。
ということで、ふたつフォルダを並べて、くまっこさんの画像ファイルの名前を「かんたん電子書籍作成」のファイル名にリネームする。
くまっこさんが本のために描き下ろした画像の入ったフォルダ
「かんたん電子書籍作成」が作成したダミー画像の入った images フォルダ
ファイル名の変更が終わって、そのまま上書きすれば、挿絵のセットは完了。EPUBに梱包しなおしてkindlegenでmobi化して試す。
目次やカバー、スタートページも意図通り設定されている。
目次から不要なものを取り除く
OEBPS/text/nav.xhtml 目次の該当部分を削除
OEBPS/toc.ncx は今は使われていないけど念のためこちらも該当部分を削除。ページ順を編集。
以上で『ほしのこ』(くまっこ)の基本部分・本の骨格の出来上がり。
あとは、くまっこさんのリクエストに応じて、HTML文書、CSSを直接開いて編集して調整。
挿絵1ページ部分のCSS
などや、文字の大きさの調整、さらに小説部分で改ページのリクエストや目次に追加などのリクエストを反映してできあがった。
(HTMLの直接編集などもしかしたら以下次号)
宿題。
リフローでは縦書きで文字組の横方向に対してセンタリングはできないので、固定レイアウトとリフローレイアウトのハイブリッドがkindleで可能になったらやり直す。
アンドロイドなど、縦横比の違うデバイス対応ができるようなら検証してやり直す。
くまっこさんのkindle本
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
W8BEN受理でkindle事務手続き完了
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
もう3月だった
気づいたらまたひとつ馬齢を重ねる。
2月は。池波正太郎「剣客商売」、上橋菜穂子「獣の奏者」1・2、梨木香歩「エンジェル エンジェル エンジェル」
3月にはいって、梨木香歩「家守奇譚」、池波正太郎「鬼平犯科帳」1。
梨木香歩の「家守奇譚」は本当にびっくりした。傑作だった。何度も再読したい。座右の書。文章、比喩、描写、会話のひとつひとつが可笑しみを伴い、いちいち腑に落ちるのだ。
死んだ友人、河童、人魚、かわうそ、狸…いろんなものが景色に溶け込んで普通の顔をして、そこにいる、緩くて澄んだ空気が気持ちいい。
初の池波正太郎「剣客商売」は、え?まさか、こっちが主役かと。ちびエロ爺だった。ホモ、女装、男装など飛び道具満載。にやっとさせられるシーンが多くて面白かった。これはまだまだ続きがあるので愉しみ。
うううむ。ここんとこナニもしてないぞ、おれ。ヤバイなあ。
確実に脳細胞は劣化していくってのに、とっととなんかネタを見つけてモノ作りニッポンしなきゃ、だ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
mixiが炎上かあ
へえ、mixiがなんか炎上してるんだ、ぐらいで、過剰反応だろと思ってたんだけど、利用規約の文章をみると、論外というか。著作者人格権を行使しちゃいけない、て土人ですか。
しょせんネット企業なんてこの程度の意識なのか。ユーザーに向いていたはずの目線が、上場しちゃってビジネスだなんだと会社ごっこに舞い上がったのか。
そのへんはよくわからないけど、著作者人格権を行使するなうんぬんの一文を削除できるかどうかでわかる。こんな文章が入ってたら、どう取り繕ったところで「ほっほっほっ、あんた、うちにたてついてもらっちゃ困りますなあ、文盲じゃないですよね学校出てますよね、これ読めますよね」
と。
とりあえずわたしはこうやって自宅サーバーなので、うえから目線でいきなり土人あつかいされることもない。…だけど、猫の毛とか、機械音痴(うーん死語っぽい)とか、なかなか信用できないのは困ったもんです。
また寒さがぶりかえしてやがる。さぶいなあ
[03/05 23:36:29]
そっか、2ちゃんは、著作権は2ちゃんに譲渡(?)した上、投稿者に使用権を認める、というやりかたか。こっちが一枚上手、ネット巧者だなあ。
[2008/03/06 08:05:53]
げ。夜中から、喉が腫れてきて、キビシーぞ。ちくそお。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
落ち着かない週末でした
休日だけど、ちょこちょこと連絡やらサーバー監視やら。まだ、SSL導入という難題が残ってるので明日以降はその取り組み、なんだよなぁ。うううむ。
んでもって、せっかくの快晴、好天、近くにできたでかいヨーカドーを冷やかしに出かける。…ひと、多すぎ。見ただけでうんざりひとあたり。相方の話によると映画館が10ケもあるというのでちょっと見たかったんだけど、そんな気力も一気に萎える。なんせオープンして最初の週末、そりゃごった返す、か。もう少し落ち着くまでは様子見だなぁ。
ケータイの契約を変えるのにその後右往左往。なんだか思い通りにならないことが続き、不機嫌モード突入。北千住で、惣菜類を買ってかえって、風呂に入ってようやく、不機嫌モード解除。サッチモとボブ・マーリイを流しながら、ひさしぶりのジンをいただきます。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」