プログラミング

【golang】保存先のファイルを作成したのちに、そのファイルを指定してダウンロードする

お疲れ様です。ダイコー(@pc16691297 )です。以前ブログに書いたスクレイピングツールは無事完成してほっとしているところです。あの時はログインの際にどうやってクリックさせる場所を指定するかについて悩んでいました。

今回は作業も進み、ようやく完成に近づいた時に起きたちょっとしたトラブルです。

あと少しで完成だ!…でも

途中にいろいろ壁もありましたが、 、少しずつ超えていき 無事URLから画像を複数指定してダウンロードできるという完成間近というところまで来た時でした。

「これダウンロード先指定したいよね」

まぁそうですよね。実はこの時点でgo buildで実行ファイルを作成して、スクレイピングをしてもらっていたんですが、画像はその実行したファイルと同じディレクトリにダウンロードされてしまっていたわけです。

やっぱり一度に取ってきた画像群は同じフォルダに収めたいというわけで最後の壁が立ちはだかりました。

結論:保存画像の名前の前にフォルダ名をいれるだけだった

結論を言えば、今回もめちゃくちゃ簡単でした。これに気づけなかった自分が恥ずかしい。

hoge/huga.jpg

こんだけ。

huga.jpgという画像をhogeというフォルダにダウンロードする場合はこのように書けばいいだけでした。チョー簡単

これが思いつかず、一度func init()でフォルダを作成した後、その場所をカレントディレクトリにして実行させようとしたり、一度画像をダウンロードさせて、そのあと別のプログラムを使ってフォルダ分類させようとか考えてました。まじで当時の自分をぶん殴ってあげたいです。

おまけ:ほかの壁って?

最初に書いたほかの壁ってどんなのがあったのかを備忘録として書いておこうと思います。

セレクター指定問題

またセレクターです。こいつはいつも私の頭を悩ませてくれます。くそ

例えばある画像が置いてあるページにアクセスして、その画像すべてをダウンロードしたいとします。もし一枚だけで考えていいのなら、検証ツールで対象画像セレクターの絶対パスが以下のようになっているとき

#fcM > td:nth-child(2) > aa

このように当然aaにたどり着くようにパスを指定すればいいんですが

#fcM > td:nth-child(1) > aa
#fcM > td:nth-child(2) > aa
#fcM > td:nth-child(3) > aa
#fcM > td:nth-child(4) > aa

このようになっていて、複数のセレクターのaa要素を取得したい場合、ここで共通していない数字の部分を省いて指定してあげます。

#fcM > td:nth-child > aa

つまりはこんな感じですね。こうすることでどうやら数字は無視してこのパスに該当するすべての要素を取得してくれるようになるみたいです。

Chrome driver普通にWindowsでも動いた

実ははじめはWindowsにわざわざubuntuを入れて開発していました。

というのも、macでは普通に使えるhomebrewがWindowsじゃ使えないんですよね。当時はまだその方法でしかChrome driverを使えるようにできる方法を知らなかったんです。なのでLinuxbrewを代わりに使ってました。

ところがどっこい、ひじょーーーーに開発環境を作るのが大変でした。やり方を模索し続けてやっとの思いで完成…って感じですね。

でも動いたんです!Windowsでも!Chrome driverが!

PATHを設定してあげるとOK

てかめっちゃこれも簡単でした。適当なところにChrome driverをダウンロードして、zipを解凍します(解凍って古いらしいですね。最近は展開って言うみたいです)。

その後出てきたChrome driverがあるディレクトリの絶対パスをメモします。

そしてWindowsの左下の検索から「環境変数を編集」を選び、PATHに先ほどメモした絶対パスを登録するだけでつかえるようになります。

これ何をしてるかっていうと、PATHというものに登録するとPCが優先的にその場所を探してくれるようになるんです。

PCも場所がわからない!

仮にcmdで「Chrome driver使うから探しといてね」っていう指示をしたとします。このときPCはどこにChrome driverがあるか探さなきゃいけないわけなんですが、それがめちゃくちゃ大変なわけです。

「Chrome driverってどこ!?フォルダが多すぎて検索かけきれないよぉ…」

と弱音を吐いて探すのを諦めます。多分can't find chromedriverとかのエラーを吐いた気がします。

そうならないように「あらかじめこのフォルダを優先的に探してみてね」という場所を記しておくことで、ちゃんとPCが認識してくれるようにしているわけです。

この作業を挟む意味をちょっと前までは理解していませんでした。いやぁ解決してよかったです。

ブログ月次報告 ブログPV・収益

2023/3/9

【月刊PBマガジン3月号】PCBuildnetのロードマップを作る【創刊号】

自身を奮い立たせるためと、これからブログ・アフィリエイトを始めようとしている人の参考にしてもらうために、ブログの記録を残すことにした。今回は創刊号。めでたい。 月間アクセス数・収益 過去1年のアクセス数および収益状況を公開する。 執筆数 合計記事数 月間PV 収益(円) 2023/2 3 43 17,118 30,453 2023/1 2 41 27,014 17,958 2022/12 1 40 22,471 21,472 2022/11 1 39 16,771 13,298 2022/10 0 39 ...

続きを読む

ガジェット

2023/3/7

【レビュー】Logicool G PRO X SUPERLIGHTの魅力に迫る。

お久しぶりです、Jinです。 この記事は一言で言うと Logicool G PRO X SUPERLIGHTをレビューした記事 になります。 と思ったことはありませんか?私はあります。決定的に使いやすいマウスを求めて苦しんできました。 そんな中、いろんなマウスを買い漁った中で と思ったマウスを紹介させてください。 それが、Logicool G PRO X SUPERLIGHT。 ロジクールは数多くのゲーミングデバイスを発売していますが、 このマウスは価格.comの売れ筋ランキング(ゲーミングマウス部門)に ...

続きを読む

制作実績

2023/2/5

【制作PC紹介】i9とRTX3090TiのハイエンドPC

依頼いただいたPCを紹介しています。 Jinです。主にTwitterでPCのサポートを行ってます。お仕事依頼はお問い合わせまで。 PCの紹介 i9 12900kとRTX3090Tiのモンスター級スペック 本PCは、i9 12900KとRTX3090Tiで構成されています。 CPU・グラフィックボードともに、当時のハイエンド構成です。 あらゆる動作を楽々こなせるため、快適なPCライフが送れることは言うまでもありません。 この上ない開放感のある仕上がり 開放感のあるPCケースである「Lianli O11 DY ...

続きを読む

自作PC

2023/3/7

【予算20万円】ゲーミングPCを自作しよう【2023年版】

お久しぶりです、Jinです。 この記事は一言で言うと 20万円で自作PCをつくるための記事 になります。 20万円でゲーミングPCを作りたい! けどパーツが高くて、なかなか踏み込めない... せっかくだからかっこいいパソコンを組み立てたい! このようなことを考えている、そんなあなたに読んでほしい記事です。 前半では20万円で自作PCをするためのパーツ構成を紹介します。 後半では、20万円でパーツを集める時に考えていることをつぶやきます。 それじゃ、やっていこう! Jinです。主にTwitterでPCのサポ ...

続きを読む

自作PC

2023/1/29

【CPUとは?】自作PCがグッと楽しくなるCPUの疑問集めました

お久しぶりです、Jinです。 この記事は一言で言うと CPUの知識について広く解説した記事 になります。 このようなことを考えているかたにおすすめの記事です。 「CPUとは?」という検索ニーズにはいろいろあり、 このページを訪問していただいた方によって、知りたい情報量も違うはず。 なので今回は: CPUの一般的な知識 より自作PCにフォーカスした知識 さらに深い探究心のある人のための知識 この3つの段階の疑問に回答します。ちょっぴり網羅的な内容にしてみました。 ぶっちゃけ知らなくても何も困らないし、PCも ...

続きを読む

このブログについて

このブログでは自作PC、ガジェットに関する情報を発信しています!

有益な情報をお届けできるよう、日々精進しております。

コメント、ご意見大歓迎です!気軽に残していってね。

PCの組み立て・サポートも行ってます。

PCの相談はツイッターお問い合わせにどうぞ。

ツイッターで相談する

PCの相談をする

  • この記事を書いた人

じん

自作PC組み立ての代行をやってます。 チェンソーマンとDr.Stoneが好き。

-プログラミング