面白そうな動画があったのでC#でできるかやってみました。

2019/10/26の動画です。1年以上前の二番煎じです。

Yahoo画像検索を使いますが、ページが例のごとくJavascriptによって描画されるようになっています。そのためHTMLを単純に解析するだけではダメです。ブラウザ自動操作ライブラリ「Selenium」を使います。

まずimgタグを取得します。そして一番最後のimgタグの座標をしらべてスクロールさせます。またスクロールを繰り返すと「もっと見る」というボタンが表示されます。そこで

一番最後のimgタグの座標をしらべてスクロール
「もっと見る」というボタンがあればクリック

を繰り返します。ボタンをクリックする処理は例外が発生する場合があるのでtry-catch文を使います。引数のmaxは最大取得数です(実際にやってみると600件ちょっとで「これ以上表示できません」と表示される。最大取得数を設定していないからといって無限に取得できるわけではない)。

NuGetでSelenium.WebDriverとSelenium.Support、そして操作したいブラウザのDriverをインストールします。今回はChromeを操作するのでSelenium.Chrome.WebDriverをインストールします。

上記コードでurlsのなかに画像のurlが格納されるので、ここから画像をダウンロードしてファイルとして保存します。