読者です 読者をやめる 読者になる 読者になる

或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きです。

WindowsPowerShellでAmazonの書籍情報の商品説明を取得する #WindowsPowerShell #スクレイピング

PowerShell スクレイピング

Amazonの書籍情報の商品説明を取得したい

書籍アフィリエイトをやっていると商品説明のを引用したいと思うことが多々あります。なので、Amazonから商品説明を抜き出してやろうと考えました。せっかくなので、ISBNコードを与えて、その商品説明を取得するfunctionを作っちゃいました。

サンプルコード

function Get-DescriptionOfBook($isbn)
{
    $base_url = "https://www.amazon.co.jp/dp/"
    $res = Invoke-WebRequest($base_url + $isbn)
    foreach ($item in ($res.AllElements `
                      |?{ $_.id -eq "productDescription" } `
                      | Select-Object innerText))
    {
        $ret_array = $item.innerText.split("`n")
        $ret_array[0] = $null
        $ret_array[$ret_array.count-1] = $null
        $ret_array
    }
}
Get-DescriptionOfBook "4873113822"

実行結果

PS>C:\Users\oneshot\Documents\WindowsPowerShellテスト\get_descriptionofbook.ps1

本書はPowerShellを使ってさまざまな処理を行うための方法を解説します。
PowerShellの基本」「一般的なタスク」「管理者タスク」という3部構成で、様々な場面で発生しうる実際的な問題を260例集め、それぞれに解決法を示します。


「一般的なタスク」では、対話的なシェルの利用法、パイプラインの基礎とオブジェクトの概念、スクリプト言語としての特徴などを解説します。
「管理者タスク」では、実践的なレシピを網羅。システム管理として、Windowsレジストリ、イベントログ、プロセスなど管理方法を扱い、エンタープライズ管理として、
WMI、Active Directory、その他エンタープライズ指向のタスクなどを扱います。
またExchange Server 2007とOperations Manager 2007管理者のためのタスクもカバーします。

PowerShell開発チームに初期から携ってきた著者が執筆した本書は、PowerShellをマスターしたい技術者必携の一冊です。
内容(「BOOK」データベースより)
本書はPowerShellを使ってさまざまな処理を行うための方法を解説。3部構成で、様々な場面で発生しうる実際的な問題を260例集め、それぞれに解決法を示します

読者の皆様へ

サンプルコードがあんまり綺麗じゃないけど勘弁してね。ただ、function化したことによって、汚いところが隠蔽されて、良いでしょ?

スクレイピングは役に立つ

Python スクレイピング

お礼の言葉をいただいちゃった

お礼の言葉は嬉しい。仕事の対価は、お金だけじゃないと思う。誰かの役に立っているということが対価。それが強烈なモチベーションになる。

元記事(アルク英辞郎 on the Webのページをスクレイピングしてみた。 #Python #WebScraping)

oneshotlife-python.hatenablog.com

スクレイピングは問題があるが役に立つ技術

当投稿をポストしたときも、とある読者の方から批判の言葉をいただいた。

> http://www.alc.co.jp/policy/other/
>
> ・「英辞郎 on the WEB」のメタサーチや、検索結果画面の改変を伴う利用は、許諾なく行うことを禁じます。

> 弊社以外の第三者により定義されたユーザースタイルシートの利用や、ブラウザのプラグインやアドオン・プログラムおよびそれを利用したスクリプト、スクレイピングなどの技術を利用し、「英辞郎 on the WEB」エンジンを無断で利用し、または画面構成部品を無断で改変するもの。

利用規約(http://www.alc.co.jp/policy/other/)に上記のことが記されているので利用に当たっては少なくとも許可を取る必要があるものと思われます.

ご批判はもっともなんだけど、ちょっと違うかなと思う。商用利用として、アルクのサイトを使うというのはもちろん問題だと思う。なので、アドオンやbookemarkletを作成して配布するには配慮が必要となろう。が、スクレイピングの技術を普及させる上で、その実装方法を提示することは私にとって大事なことだ。その題材として、アルクのサイトを使わせていただくことは、必ずしも問題があるとは思わない。一応、アルクも、Webサイトを公開している以上、こういった変わったユーザーも出てくるというくらいは、想定しているであろうし、その程度でブロックされたり裁判を起こしたりはしないだろうと思う。

スクレイピングを普及させるには

著作権の問題や、威力業務妨害(Webサイトに過度の負担をかける)など、留意するべき事項はあるが、その難しい問題を乗り越えてでも活用するだけの魅力はある。批判されることもあるだろうけど、折れずに続けていきたい。情熱を理解してもらうことが重要。お金儲けや嫌がらせのためにスクレイピングをやっているわけではない。スクレイピングがインターネット技術の発展に寄与すると思っているからやっている。そこだけはわかっていただきたい。

WindowsPowerShellでmeta descriptionを取得する

PowerShell

meta descriptionとは

引用させていただきます。

meta descriptionはhead内に記述される、ページの概要を表すテキスト情報です。meta descriptionを最適化することでの順位上昇などの効果は現在のGoogleではほとんどありません。
しかしmeta descriptionはサマリーとして検索結果に表示される可能性があるため、オーガニック検索のクリック率には大きく影響を与えます。そのためmeta descriptionはページ内容を端的にまとめ、正しく記述します。
meta descriptionとは | A~Z [SEO HACKS]

当ブログのmeta descriptionの取得の仕方

ちょっと迷ったんだけど、まずはソースコードを眺めてみた。最近あまりソースを見ていたかったんだが、久しぶりに見てびっくしりた。descriptionって何種類かあるのね?
ちなみに、はてなブログでは以下があるようだ。簡潔かつ、適当かつ、根拠なしに説明も付け加えてみた。

property="og:description"

SNS向けのdescription

name="twitter:description"

twitter向けのdescrpiton

name="description"

通常のウェブサイト向けのdescrpiton

meta description取得のソースコード

PS>$url = "http://oneshotlife-tom.hatenadiary.jp/"

PS>$res = Invoke-WebRequest $url

PS>$res.AllElements | ?{ $_.tagName -like "meta" -and $_.outerHTML -like "*description*" }

innerHTML : 
innerText : 
outerHTML : <meta content="Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きで
            す。" property="og:description">
outerText : 
tagName   : META
content   : Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きです。
property  : og:description

innerHTML : 
innerText : 
outerHTML : <meta name="twitter:description" content="Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,V
            BAなどでもたまに書いています。おバカなことが大好きです。">
outerText : 
tagName   : META
name      : twitter:description
content   : Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きです。

innerHTML : 
innerText : 
outerHTML : <meta name="description" content="プログラミング言語Pythonを好んで使っているプログラマのブログです。">
outerText : 
tagName   : META
name      : description
content   : プログラミング言語Pythonを好んで使っているプログラマのブログです。

注意点

御覧になっていただければわかるように、プロパティ名が違う。。。nameだったり、propertyだったり。なので、ラッパー関数なんかを作って挙げて、内部処理を隠蔽してあげればいいのではないかと。

WindowsPowerShellでAmazonの書籍売れ筋ランキングをスクレイピングして整形 #WindowsPowerShell #WebScraping

PowerShell スクレイピング

以前Pythonでやったことあるけど

書くのに多少時間かかるけど、一度書ければ実行は容易。

WindowsPowerShellのサンプルコード

$url = "https://www.amazon.co.jp/gp/bestsellers/books"

$res = Invoke-WebRequest $url

foreach($item in ($res.AllElements | ?{ $_.class -eq "zg_itemRow" }))
{
    $No = $item.outerText.split("`n")[0].replace(".","")
    $Title = $item.outerText.split("`n")[1]
    $Author = $item.outerText.split("`n")[2].split(",")[0]

    Write-Output ("**No."+ $No)
    Write-Output ("Title:"+ $Title)
    Write-Output ("Author:"+ $Author)
}

多少不細工だが、PHPVBAで書いたものよりずっと綺麗。

出力内容

  1. No
  2. Title
  3. Author

実行結果

No.1

Title:小説 君の名は。 (角川文庫)
Author:新海 誠

No.2

Title:君の名は。 Another Side:Earthbound (角川スニーカー文庫)
Author:加納 新太

No.3

Title:魔法科高校の劣等生 (20) 南海騒擾編 (電撃文庫)
Author:佐島勤

No.4

Title:新海誠監督作品 君の名は。 公式ビジュアルガイド
Author:新海 誠

No.5

Title:自分の「引き寄せ力」を育てたいあなたへ Keiko的Lunalogy 月星座ダイアリー2017
Author:Keiko

No.6

Title:野菜とくだもののパワー ファイトケミカルスできれいになる本
Author:宮澤 陽夫

No.7

Title:新説 狼と香辛料 狼と羊皮紙 (電撃文庫)
Author:支倉凍砂

No.8

Title:狼と香辛料 (18) Spring Log (電撃文庫)
Author:支倉凍砂

No.9

Title:西野七瀬写真集 風を着替えて
Author:西野 七瀬

No.10

Title:腐女子のつづ井さん2
Author:つづ井

No.11

Title:グランブルーファンタジー・クロニクル vol.09
Author:CRMブックス

No.12

Title:どんなに体がかたい人でもベターッと開脚できるようになるすごい方法
Author:Eiko

No.13

Title:新海 誠Walker ウォーカームック
Author:新海 誠

No.14

Title:NAOKO balance
Author:高山 直子

No.15

Title:ジ・アート・オブ・シン・ゴジラ
Author:カラー、東宝

No.16

Title:TOEICテスト公式問題集 新形式問題対応編
Author:Educational Testing Service

No.17

Title:ウシジマくんvs.ホリエモン 人生はカネじゃない!
Author:堀江 貴文

No.18

Title:2016-2017 EUROPE SOCCER TODAY
Author:ワールドサッカーダイジェスト

No.19

Title:はたらく魔王さま! 0-II (電撃文庫)
Author:和ヶ原聡司

No.20

Title:渡辺麻友写真集『タイトル未定』 (講談社 MOOK)
Author:渡辺 麻友

ヒットラーに興味のある読者さんありがとうございます。

Amazon アフィリエイト

昨日、以下の書籍を小生のブログを経由して購入したいただきました。

わが闘争 (まんがで読破)

わが闘争 (まんがで読破)

劇画ヒットラー (ちくま文庫)

劇画ヒットラー (ちくま文庫)

せっかくなので今後は、反響があったブログについて、随時紹介していこうかなと思います。
d.hatena.ne.jp

東条英機岩手県出身という情報もあれば東京出身という情報もあります。これには、ちょっと同族意識とかが関係してくるのだと思います。A級戦犯になったので、同郷だと思われたくない心理があるんだと思います。そして、それと同じような状況が、ヒットラーにもあります。ヒットラーは、ドイツの独裁者だから、ドイツ出身だと思うでしょう?これを、ドイツ人に言うと怒られます。ヒットラーはオーストリア人です。。。

そういうブログを書いた流れで、ヒットラーについて紹介させていただきました。けっこう興味深いんだぜ。

みるくたんに一番読んで欲しい書籍

Amazon プログラミング

買わなくていいからね?俺持っているので貸します。

プログラマーの生態ってわかりづらいと思います。そして、プログラマーにも2種類います。ハッカー社畜。多数派は社畜です。プログラマーが読んでおいて損が無い本はたくさんありますが、当書籍もそのうちの一つ。ただし、社畜が読んでも面白くないよ。情熱のあるハッカーにこそ読んで欲しい。そして、ハッカーとはどんな人かを知りたい人にもお薦め出来ます。プログラミングの高度なお話も出て来ますが、非プログラマーが読んでも理解出来るように一般的な言葉で書かれてあるのが嬉しい。

WebScrapingのまともな書籍はSpidering Hacksのみ

スクレイピング

WebScrapingは一種の流行のようで、様々な書籍が出ている。実装言語も様々。個人的には、目的さえ達成出来れば、どんな限度でも良いと思う。

さて、WebScrapingの書籍を片っ端から購入したのだが、まともな書籍は、2つしかないと思う。厳密に言えば、まともな書籍はたった一つで、まぁまぁ悪く無い書籍が一つ。

これです。

欠点は、出版年度が古すぎるというところと、実装言語がPerlというところ。まぁ、でも何とでもなる。内容が古くても、エッセンスさえ分かっていて、他にプログラミング言語経験があるのなら、十分に理解出来るし、タメになる。Perlで書かれてはいるが、他の言語で書き直せばいい。おそらく、Ruby,Pythonあたりだったら、それほど難しくもなく、書き直せるのではないかしら。ちなみに俺は、WindowsPowerShellで書き直そうとしている。詳細は、後ほどのエントリにて。

ちなみに、最近、洋書で改版されたみたい。

近いうちに買おうかなと。