書籍検索スクリプト祭り

昨日のエントリSleipnirを初心者がいじりまくるブログのsidus氏からコメントをいただいたので調子に乗ってみます。

昨日の本やタウン書籍検索(ISBN)の解説

前提

まず全く書いていなかったのですがあのスクリプトはSleipnirScriptとして使うことを前提としています。
右クリックメニューなんかに登録すると便利だと思います。

ISBNってなんなのさ

書籍につけられたIDナンバーみたいなものです。
amazon(書籍)でいうところのASINに相当します。
基本的に同じタイトルの本でも改訂されるとISBNが変わります。
e-honやYahooBooksなどオンライン書店で本の詳細をみるページで「ISBN 〜〜〜〜」といった感じで表示されています。
去年末まで国内の書籍には4から始まる10桁の数字だったのですが、今年からは978から始まる13桁に移行しました。

動作説明

文字列を選択した状態でスクリプトを実行してください。
選択文字列にISBNがあればそのISBNで検索します。
ISBNにハイフンが含まれていても、また含まれていなくても大丈夫です。
選択文字列中のISBNの前に数字とX以外が含まれていても大丈夫です。
選択文字列中のISBNの後ろはどうなっていても選択文字列中の最初に出現するISBNで検索します。
おすすめのISBNの文字列選択の方法があります。ISBN上でダブルクリックしてみてください。多くのサイトでISBNのみを選択できると思います。

応用編

本やタウン書籍検索(ISBN)の18行目の

	pnir.NewWindow("http://www.honya-town.co.jp/hst/HTdispatch?free=&free_andor=0&title=&title_andor=0&title_title=1&title_subtitle=1&title_series=1&title_original=1&author=&author_list=0&publisher=&date_yy_from=&date_mm_from=&date_yy_to=&date_mm_to=&list_kensu=20&stamp_style=0&price_from=&price_to=&isbn_cd="+ISBN+"&vague_search=1&pub_stat=2&nips_cd=&submit.x=0&submit.y=0",true);

の行を

	pnir.NewWindow("http://www.e-hon.ne.jp/bec/SA/Detail?refISBN="+ISBN,true);

に差し替えてもらうとe-honで検索出来ます。

他にも

楽天ブックス

	pnir.NewWindow("http://esearch.rakuten.co.jp/rms/sd/esearch/vc?sv=30&v=2&oid=000&f=A&g=001&p=0&s=0&e=0&sitem="+ISBN,true);

amazon

	pnir.NewWindow("http://www.amazon.co.jp/exec/obidos/ASIN/"+ISBN,true);

YahooBooks

	pnir.NewWindow("http://books.yahoo.co.jp/book_search/isbn?os=1&isbn="+ISBN,true);

さらに応用

感のいい人にはもうおわかりだと思いますが、要するに本の詳細をみるページのURLにその本のISBN(10桁のハイフンなし)が含まれていれば
そこを差し替えてやれば他の本もそこで検索できるわけです。

実際にやって見ました。

自作のスクリプトになかったbk-1でやってみます。

本の詳細をみるページのURLを確認します。

トップページを開いてみます。

トップにはその時期の売れ筋とかが載っていますので今回は「毎日かあさん4」をクリックしてみます。

詳細画面が表示されました。ここでアドレスバーに注目。

一見、ISBNのようなそれらしい数字が並んでいますがこれは違います。本やタウンやYahooBooksなどでも同様のコードが使われています。
僕はこの数字の生成方法がわからないのでこのままでは検索できません。
こういった場合には別の方法があります。
多くの場合「詳細検索」のような細かく検索条件が指定できるところがあるのでそこにいきます。
bk-1でも上部の検索フォームの横に「詳細検索」があります。
「詳細検索」ページでISBNのみを指定して検索してみます。

ここではISBN”4798013951”と入力し検索してみてください。


するとアドレスバーにはさっきとは違ってものすごく長いクエリ文字列がくっついたURLが表示されています。
よ〜く見てみると先ほど入力したISBNが含まれています。
やっと目的のURL発見です。

書き換え作業です。

http://www.bk1.jp/webap/user/SchDetailBibList.do?keyword=&genreCd=&title=&author=&publisher=&isbn=4798013951&searchFlg=2&sortType=00&hdnPageMax=10&hdnPageNo=1&publicationYM=&ageOfUse=&productFlg=1&reviewFlg=9&submit=%E3%80%80%E6%A4%9C%E7%B4%A2%E9%96%8B%E5%A7%8B%E3%80%80&rootType=0&dp18=

この長いクエリ文字列をはじめからISBNまでの部分とISBNより後ろの部分をこのように括ります。

"http://www.bk1.jp/webap/user/SchDetailBibList.do?keyword=&genreCd=&title=&author=&publisher=&isbn="

"&searchFlg=2&sortType=00&hdnPageMax=10&hdnPageNo=1&publicationYM=&ageOfUse=&productFlg=1&reviewFlg=9&submit=%E3%80%80%E6%A4%9C%E7%B4%A2%E9%96%8B%E5%A7%8B%E3%80%80&rootType=0&dp18="


ISBNの数字の部分はスクリプト内では変数ISBNに格納されていますので連結させるとこうなります。

"http://www.bk1.jp/webap/user/SchDetailBibList.do?keyword=&genreCd=&title=&author=&publisher=&isbn="+ISBN+"&searchFlg=2&sortType=00&hdnPageMax=10&hdnPageNo=1&publicationYM=&ageOfUse=&productFlg=1&reviewFlg=9&submit=%E3%80%80%E6%A4%9C%E7%B4%A2%E9%96%8B%E5%A7%8B%E3%80%80&rootType=0&dp18="

後は本やタウン書籍検索(ISBN)の18行目の部分をこのような形式で書き換えればOKです。

pnir.NewWindow(ここにさっき連結させたURLが入る,true);

よって

	pnir.NewWindow("http://www.bk1.jp/webap/user/SchDetailBibList.do?keyword=&genreCd=&title=&author=&publisher=&isbn="+ISBN+"&searchFlg=2&sortType=00&hdnPageMax=10&hdnPageNo=1&publicationYM=&ageOfUse=&productFlg=1&reviewFlg=9&submit=%E3%80%80%E6%A4%9C%E7%B4%A2%E9%96%8B%E5%A7%8B%E3%80%80&rootType=0&dp18=",true);

となります。

終わり

他のオンライン書店に対応させる分にはJavaScriptの知識なしで可能なのでチャレンジしてみてください。
もう眠いので寝ます。