Native Campの「TOEIC L&R TEST 800点対策」が意外とおもしろい件

8ヶ月くらい前からオンライン英会話をDMMからNativeCampに変えて、ほぼ毎日1レッスン受けています。

切り替えた直接のきっかけは会社から一定期間、補助金がでていたからですが、補助金がでなくなったあとも続けている理由は、Native Campではカランメソッドを受講できるからです。

そのカランメソッドもステージ2から12まで(Readingはスキップ)1周目が終了しました。

また、久しぶりにTOEICを受験することになったので、現在、カランメソッド2周目の合間に 「TOEIC L&R TEST 800点対策」を受け始めております。

そのTOEIC L&R TEST 800点対策」のレッスンが意外に楽しかったので、ここに概要を記載しておきます。

特にPart2がおもしろい

実はまだPart1の写真のやつと、Part2の正しい受け答えを探すやつしかやっておりませんが、いまのところPart2は意外とおもしろいなとおもっております。

だいたい1レッスンで5問ずつ解いておりますが、1問ごとの流れとしては以下のような感じです。

1.受け答え(QuestionとAnswer(A〜C))を一通り聞く

2.正しい回答(A〜C)を回答する

この時は「My Answer is letter A.」などと答えています。

また1回目で答えがわからなかった場合は、もう1度聞かせてもらえます。

3.講師から正解を聞く

この時、1発で正解するとわりとどの講師であってもけっこう褒めてもらえます。

4.Questionを再度聞き、聞き取ったとおりSpeakingする

正直、ここは難しいです。すべての単語を正確に(a とか the とか含め)聞き取ること自体結構難しいです。

また聞き取れたとして、Questionは文章がやや長めなので、正確に思い出しながらSpeakingするのは私にとっては難易度高いです。

5.正解のAnswerを再度聞き、Questionと同じようにSpeakingする

AnswerのほうはQuestionよりやや文章が短いですし、たまによくあるフレーズがでてくるので比較的簡単です。

6.QuestionとAnswerについて講師とロールプレイイングする

正直ここは講師によってやり方がちがうので、あまり明確に手順が決まっていないようです。

講師によっては3回同じ役割でロールプレイングを繰り返したり、途中でQuestionとAnswerの役割を講師と私でスイッチしたり、1回しかやらなかったり、いろいろです。

7.最後にもう一度、QuesttionとAnswer(A〜C)を聞き取る

カランメソッドとの違い

「TOEIC L&R TEST 800点対策」のレッスンを受けてみて、「カランメソッド」との違いを感じたのは以下の点です。

・最初の自己紹介が「TOEIC L&R TEST 800点対策」の方が長い気がする

これは私が「カランメソッド」をすでに長い間やっているので、その講師の方と話すことがなくなってきたということもあるかもしれません。

しかし、なんとなく「TOEIC L&R TEST 800点対策」の講師の方がまだ経験が浅い方が多く、生徒となんとかコミュニケーションを多く取ろうとしているようにも見えます。

これをフリーカンバセーションと考えると、臨機応変に答えないといけないので、Speakingの勉強にもなっている気がします。

・オーディオと更新の説明を交互におこなうのでたまにバグる

これも結果的にフリーカンバセーションになっているのですが、TOEICのリスニング音声を流したり、講師の説明(音声)に切り替えたりしていると、たまにシステムがバグってお互いの声が聞こえなくなったりします。

こういったハプニングも結構起こるので、そこから体勢を立て直す為にいろいろスピーキングしないといけません。ここもSpeakingの勉強になっているかなと思います。

以上、Part2をメインに「TOEIC L&R TEST 800点対策」のレッスン内容を説明しました。

Part3以降もいくつかレッスンが用意されているので、これから継続して受けてみたいとおもっております。

スマホアプリSimple Time Trackerでランニングの記録をとってみたら快適だった

コロナ禍になってからジム通いをやめて、外をランニングするようになりました。

しかし、ただランニングするだけだとモチベーションが続かないと思い、ランニングを記録するアプリをこれまでいつくか使ってきました。

しかし、それらすべてに言えることですが、ランニングを記録するアプリでは常にGPSで位置を取得している為、非常にスマホの電池の消費が早くなる、というのが悩みでした。

そこで、よりシンプルにランニングしている時間だけ記録してくれるアプリをさがしていたところ、Simple Time Trackerというアプリを見つけました。

ボタンを押すとシンプルに時間を測定

このSimple Time Tracker、名前の通り機能は非常にシンプルで、該当する活動のボタンを押すと時間を測り始めてくれます。

Simple Time Tracker 起動画面

たとえば一番左側の「running」のボタンを押すと、以下の画面になります。

running 記録中

そして、ランニングが終わったら、この緑色のバーを再度タッチすれば記録が停止します。

ランニング記録専用ではないので、ランニング中に誤ってボタンを押してしまっても止まらないような仕組みはありません。

しかし、シンプルすぎてランニング中に見る必要もないので、画面をバックグラウンドにしまっておけば、いまのところ問題はありません。

電池の消費は数%くらい、広告もなし!

GPSを使った記録アプリとくらべると、電池の消費は格段にすくないようです。

ただし全く消費しないわけでもないです。たぶん30分くらい走って数%消費するくらいかと思います。(スマホにもよると思いますが。)

また無料のアプリによくある広告表示も一切ありません。これはかなり助かります。

ランニング以外にも使える

当然ですが、このアプリ、ランニング以外にも使えます。私はこれを睡眠中にも使い、毎日どれくらい寝ているか測定しています。

その睡眠記録についても、最初は別のアプリをつかっておりました。
しかしなんとそのアプリ、電源を差して充電しながらつかっていても電池の充電がどんどん減ってしまうようになってしまった為、最近はこのアプリをつかっております。

新しい活動のアイコンを作る場合は、起動画面から「Add」のアイコンをクリックします。すると、以下のようにアイコンや色を選ぶ画面が表示されます。

活動のアイコン選択

ざっと見た感じアイコンは1,000種類くらいあるんじゃないかと思いますので、その活動にふさわしいアイコンが見つかると思います。

記録を後で振り返ることも

まあ、これができないと普通のタイマーでいいじゃん、という話になりますので当然、記録の振り返りは可能です。

たとえば昨日1日を振り返る場合、以下のような画面を表示させることができます。
なお、一日の開始時間を設定できますので、睡眠時間が2つの日にまたがってしまう、なんてことは避けられます。

昨日の振り返り

こちらは10日間で振り返ったパターンですが、○日間以外にも○週間、○ヶ月、○年といったスパンで振り返りできそうです。

10日間の振り返り

以上、Simple Time Trackerはとてもシンプルで使い勝手がよく気に入っておりますので、いろいろな活動でこれから利用シーンを広げていきたいと考えています。

2年ぶりにTOEIC L&Rテストを受けてみて、自分にあったリーディングパートの解き進め方を認識

コロナ禍になって以来、人ごみを避けていたため、1つの教室に大勢あつまって長い時間いるTOEICテストを避けていました。

しかし、最近少しコロナの感染者やその影響が弱くなってきた為、再度受けてみることにしました。

というのも前々回、奇跡的に845点をとってから2年以上経過してしまった為、そろそろその点数が公式に言えなくなっているであろう為です。(たしか2年間有効だったような。)

抽選にはみごと当選

300回目からは抽選が無くなるという話も聞いたりはしていますが、今回はまだコロナの影響で会場の確保が難しいからか、抽選となっていました。

しかし難なく当選しました。たぶん、競争率はだいぶん低かったんだろうなー。

会場は東京を指定したところ蒲田の東京工科大学

私は川崎市に住んでおりますが、下手に神奈川県を選ぶより、東京にしたほうが交通の便がよさそうだなあと思って、東京を会場に指定したところ、蒲田の東京工科大学になりましたー。

昔、蒲田にはよくいっていましたが、まじまじと大学を眺めたり、建物の中に入るのは初めてでした。

蒲田という下町?でありながら、ややモダンな建築。

大学の建物に入るのも久しぶりだなー。

日曜のAM10過ぎから12時21分までの戦い

コロナ前は会社で一斉に受けていたので、いつも夕方仕事が終わってからでしたが、今回は一般の会場で受けることになりました。

一般の会場は午前中と午後のどちらかが選べるのですが、私は朝方ということもあり午前を選択しました。

受付が9:25〜9:55ということでしたが、初めていく会場ということで、8時過ぎには蒲田入りし、建物を見にいきました。

しかし、まだ1時間以上前ということもあり、TOEIC会場の看板はどこにもみあたらず。

大学の敷地の広さをなんとなく確認し、近くのマクドナルドで時間を潰しました。

そして9:20分頃に再度マクドナルドから大学に向かいました。

するともうちらほらとTOEICに向かっているような人の流れができていたので、その流れに乗ってみました。

どうやら、大学の敷地に着いたら、その中には入らず、すぐ左の建物に向かっているもよう。TOEIC 以外のイベントもやっているようでしたが、無事に建物に到着しました。

さらに建物に到着すると、検温を受けて中に。中にはホワイトボードがあって、受験番号毎の教室の場所が書いてありました。

それをみるとどうやら私は3階の教室のようでした。

教室の中では後ろから2番目でしたが、私の列の1番後の人は来なかったようで、後ろからのプレッシャーを感じずに受験することができました。

しかし、集まった顔ぶれをみると、みんな私より若いなー、とすこし愕然としました。

今回はリスニングでつまずいたかも。。。

リスニングについて個人的にはパート3&4が盲点でした

パート1はほぼ完璧、パート2もそこそこ、とおもっていましたが、パート3&4はがたがたでした。

ここのパート以外はNative Campで練習していたんですが、パート3&4は練習していなかったんですよねー。そういえばここ、難しいんだった。練習しておけばよかったと後悔。

次回は事前にNative Campで練習しておこう。

席が一番後ろだったので、やや聞こえづらかった。。。というのは少し言い訳。

リーディングはめずらしく時間内にクリア

いつも時間が足りなくなるリーディングセクション。今回は2週間前くらいから徐々に時間内に全部終わるように公式問題で練習、そして解き方の作戦を立てていたのですが、それが見事にはまった感じでした。

他の人のおすすめをみると、パート6&7に関しては最初にいくつか設問を見た上で進めて、と書いてありますが、記憶力の低い私にはどうやらその作戦はあまり向いていないもよう。

また最近のTOEICは全部読まないと回答できない部分が多いらしいと聞いていた為、まともに問題文をちゃんと読んだあと、質問を1つ1つ答えることにしました。

これて、ちゃんと問題文を読めているところは、さっと答えられるし、ちょっとわからないなーというところは、再度読み直してもまちがってしまう、という公式問題集の経験から、割り切ってどんどん進めていくことができましたー。

本当に時計ないのねー。

なお、ここで誤算だったのが、教室に時計がないこと。いちおうソーラーの腕時計をもっていたのですが、長い間使っていなかった為、試験が始まる直前になっていも充電中の表示。

しかたないので、いつ終わってもいいように最後のラインはすべて一旦Cにマーク。

しかしいつもより高速に回答していくことができたので、その後、答えを選びなおし。多分全部Cにしてたらやはり2割くらいしかそのラインは得点できていなかったでしょう。

途中、おなかが空きます

午前の部といっても、試験時間は10:20〜12:20分くらいに設定されており、けっこうお昼にかかっています。

途中、すこしお腹がなったりしたので、朝、マックによったときにアップルパイだけではなく、もうすこしたくさん食べておけばよかったと後悔。

ほかにもお腹のなっているひとはいましたねー。

また受けたい

受験票にはる写真が900円もしたので、一回使うだけだともったいない。8枚綴りになっているしー。そんないらんのに。

また3ヶ月くらいしたら受けてみたいなーと思っています。

粗大ごみのリユースとして川崎市と連携している「おいくら?」をつかってみた

昨年の12月頃から一時的に川崎市に引っ越してきていたうちのおいじいちゃんが、6月末で山口市に戻ることになりました。

その為、川崎市のアパートで利用していた家電や家具を処分する必要があるのですが、6月29日まで川崎市のアパートに住んでいる為、粗大ゴミの日(6月23日)に捨てるわけにはいきません。

そこで川崎市のサイトに掲載されていた「おいくら?」のサイトを使ってみることにしました。

川崎市 粗大ゴミのリユース
https://www.city.kawasaki.jp/300/page/0000140324.html

1.おいくら?で複数業者から見積取得

こちらが「おいくら?」のサイトになります。ちなみに、見積を依頼する際に特にサイトへのログインは必要ありません。

最初は「おいくら?」という業者があるのかな?と思っていましたがどうやら違うようで、自分の売りたいものをアップすると、それを見て複数の業者が見積をくれるシステムになっているようです。

「おいくら?」サイト

商品名と製造(購入)時期の入力が必須

例えば冷蔵庫を売りたい場合、上の画面から「家電・AV・カメラ」->「家電」->「冷蔵庫・冷凍庫」と辿っていくと以下の画面がでます。

「冷蔵庫」の情報を入力する画面(おいくら?)

そしてWebフォームの入力項目の内、最低限必須項目となっている、
・商品名
・製造年数(物によっては購入時期に変わったりする)
などを入力する必要があります。(写真もアップしたほうがいいでしょう。)

この画面にたどりつく前は、写真さえアップすればいいんじゃないかと勝手に思っていましたので、これらの情報を調べるのは少々めんどうに感じました。

ただ私の場合は、購入時期がすべておなじ2021年後半でしたし、Amazon経由で購入していたので、購入履歴を検索することで比較的簡単に調べることができました。

かなり昔にかった物や、オフラインの店舗で買った場合は、事前に物やレシートを見て確認しておくのがよさそうです。

2.査定結果の確認

売りたい物を登録後、半日も経過しないうちに1社目から見積の回答が来ていました。
また、その後も1社、翌日にはもう1社から見積回答があり、今のところ3社から見積が来ています。

「おいくら?」査定状況

高級ブランド品以外の買取額は0円と見ておいたほうがいい

うーん、よく見てみると、どの会社も”-“マイナスになってるけどなんでだろう?と思って詳細を開いてみると、
・家電系:無料引取〜3,000円くらい
・家具(ハンガーラックや組み立て式のTVボードなど):無料引取〜−3,000円
・布団など:−3,000年〜−8,000円
といった感じでした。

世の中そんなに甘くありませんね。まあどれも安物だからしかたなし。

特に家電以外は値段がつかず、むしろ処分費用がかかるので、もし手間がかかるのがきにならなければ、地元の人に引き取ってもらうほうがよさそうです。

3.業者さんを選ぶ

いくつか業者さんからの見積もりが集まってきたら、その業者さんと引き取り日の調整をします。

ある業者さんの見積もり状況

見積の詳細画面をみると、業者さんの情報と各買取品に対する値付けをみることができます。

特に業者さんの評価が見えるのはよいですね。
なんとなくですが、評判のよい業者さんほど買取額は厳しい感じになっている気がします。(おそらくその分人件費をかけているのだと思われます。)

したがって、高く買い取っていくれる(安く処分してくれる)といってすぐに飛びつかず、買取額と評判のバランスを見たほうがよいのではないかと思います。

4.業者さんと引き取り日を調整する

そして気に入った業者さんがあったら、引き取り日を調整します。

買取額が表示された画面を下にスクロールしていくと、以下のような「ショップとのメッセージ」のやりとりができる画面がでてきますので、ここで調整するとよいようです。

業者さんとチャットで引き取り日調整

上の例でも土曜日にもかかわらず3時間程度で返信がきていますので、スムーズにやりとりできるのではないかと思います。

以上、簡単に「おいくら?」サイトの使い方を書いてみました。

これから私も最終的に業者さんを決定し、引き取り作業をお願いしてみようと思いますので、その際になにか気がついたことがあれば、再度ブログで紹介したいと思います。

背中が少し曲がっていて不器用だったけども愛嬌のあったコリドラス・ハステータスさんとのお別れ

我が家にはコロナ禍が始まる前からずっと飼っているコリドラス・ハステータスが3匹いました。

その3匹はとても仲がよく、いつも一緒に泳いでいたのですが、3匹ともに、目がすごく小さかったり、逆にとても大きかったりととても個性がありました。

そんな中、ひときわ目立っていたのが、すこし背中がまがって盛り上がっており、そのせいか泳ぐのがちょっと下手な子でした。

その子は他の2匹が優雅に泳いでいる中、必死に泳いで水面に顔を覗かせたり、餌を見つけて突撃していたりました。

そんな感じでとても弱そうでみんな心配していたのですが、一方で、食欲に関してはとても旺盛で、餌を投げ入れたときに一番に食らいついていたのも、その子でした。

なのでこの子は長生きするのかな、どうなんだろうかと心配していましたが、ついに昨日、なくなる日がやってきてしまいました。

亡くなる前の数日はいつもよりやはり元気がなさそうで、これまでなくなった他の子もそうであったように、警戒心が薄れるのか、そんなことが気にならなくなるのか、水槽の前面にきてじっとしていることが増えていました。

そんな時ですら、ちっちゃくて、ちょこんと砂の上に立っているこの子はとても愛嬌がありました。

そして昨日、朝から調子がわるそうでたまに横になっていたり、ほかのコリドラスのしっぽで起こされたり、われわれが心配して(もう死んじゃったのかなとおもって)ピンセットでつまもうとして立ち上がったり、一進一退を繰り返していました。

とても愛嬌のあったはっさん

しかし、夕方ごろ、ついに力つきて亡くなってしまいました。

亡くなる少し前、他のコリドラスたちもそれを察したのか、その子の周りに集まってきて、なんだか心配そうにしていました。

ガラスに近づいて向こうを見ているはっさんと心配する他のコリちゃん

水槽にいるこの子たちは、弱っているからといって他の敵に食べられるわけでもなく、最後の最後まで命の続くかぎり頑張って生きようとしており、そんな姿を見て、自分もいつももっとがんばらなきゃなと励まされています。

コロナ禍になって、すっかり新しい子をお迎えしなくなり、すでにいる子の様子をじっと見ていることが多くなったせいか、一匹一匹がすごく大切に思えるようになってきている今日この頃です。なので1匹でもなくなってしまうとつらいですね。

他の子は昨日亡くなってしまった子に代わってもっともっと長生きしてほしいです。

コリドラスはあまり泳ぐことは多くなく、じっと水の底にいてこちらの様子を見ていることが多く、時には我々が近づいて水槽の奥に逃げ出したり、こちらじっと見ていると、警戒がとけるのかこちらに向かって遊びにきたり、とても愛嬌のある子たちばかりです。

もしあまり手はかけられないけど、ペットに癒されてみたいという人は、コリドラスを飼ってみることをお勧めしたいです。

はっさん、いままでありがとう。

PythonにてVirusTotalのAPIにアクセスし、URLの危険度情報を取得してみた

前回まではPythonを使ってWebサイトの情報をスクレイピングしました。

その際にPython用に提供されているさまざまなライブラリを利用すれば比較的簡単に情報が抜き取れることを確認しました。

https://k2-ornata.com/python_scraping_table/

一方で、最近では多くのWebサイトの方で情報にアクセスする為のAPIを提供しており、それを利用すればもっと簡単、確実に必要な情報を取り出すことが可能となっています。

そこで今回は、そんなWebサイトの例としてVirusTotalが公開しているAPIにPythonからアクセスし、情報を取得してみたいと思います。

1.VirusTotalにアクセスする為のAPI Key取得

PythonからVirusTotalのAPIにアクセスする為には、まず、API Keyという自分の身元を証明するKeyを取得する必要があります。

そのAPI Key をPythonのプログラムを経由してVirusTotalに渡すことで、初めてWebサイトのAPIを利用することが可能になります。

API Key はVirusTotalのアカウント情報に紐づいていますので、もしまだアカウントを持っていなければ、それを作るところから始めます。

VirusTotalへのサインアップ

以下のVirusTotalのトップページ右上にある「Sign up」からアカウントの登録をしましょう。

VirusTotalのトップページ

アカウント情報を登録すると自分のメールアドレスにSign upを完了する為のメールが送られてきます。

そのメールのリンクをクリックすることでアカウントの登録が完了します。

VirusTotalへのログインとAPI Keyの取得

登録が完了したらさっそくVirusTotalにログインします。

ログインするとページの右上に自分のユーザアイコンが表示されています。

ユーザアイコンから「API Key」を選択

そのユーザアイコンをマウスでクリックすると、プルダウンリストに「API key」が表示されています。

それをクリックするとAPI Keyや利用制限などの情報が記載されたページが表示され、自分の API Key が確認できます。

2.PCに「vt-py」ライブラリをインストール

VirusTotal からそのサイトのAPIに簡単にアクセスする為のPython用のライブラリ「vt-py」が提供されています。

それをPyCharmなどの開発環境にインストールします。

PyCharmに「vt-py」を取り込み

あたらしいライブラリをPyCharmに導入する詳しい操作方法については、私の以前のブログにも記載していますので参考にしてみてください。

3.Pythonでプログラム開発

そしていつもどおり、おもむろにプログラムを開発します。

import vt

apikey = "<API Key>"
url = "<URL>"

# access to VirusTotal and get URL information(object)
client = vt.Client(apikey)
url_id = vt.url_id(url)
url = client.get_object("/urls/{}", url_id)

client.close()

# print each attribute from object
print(url.get("categories"))
print(url.get("last_analysis_date"))
print(url.get("times_submitted"))
print(url.get("last_analysis_stats"))

2行目の<API Key>の部分は自分のAPI Key を “8・・・・・a”のような感じで埋め込んでください。

また3行目の<URL>については、例えば yahooについて調べる場合は、”https://yahoo.co.jp”のような感じで埋め込んでください。

なお今回は、Pythonのプログラムに直接API Keyを埋め込む形になっていますが、正しくはAPI Key情報は別のファイルに保存し、しっかり暗号化などしておいてほうがよさそうです。

うっかり漏らしてしまうと、自分になりすましてアクセスされてしまいますよー。

4.Pythonの実行

実際にあるサイトについて実行した結果は以下の通り harmless : 87, malicious : 0 となっていました。問題ないという判断のようですね。

{'Forcepoint ThreatSeeker': 'search engines and portals', 'Sophos': 'portal sites', 'alphaMountain.ai': 'Search Engines/Portals', 'Comodo Valkyrie Verdict': 'mobile communications', 'BitDefender': 'news'}

1654330912

489

{'harmless': 87, 'malicious': 0, 'suspicious': 0, 'undetected': 8, 'timeout': 0}

ちなみに自分のサイト(k2-ornata.com/)を調べようとしたところ、以下のとおり知らんと言われましたー。

vt.error.APIError: ('NotFoundError', ・・・

それなりに良い意味でも悪い意味でも有名なサイトでないといけないようです。^^;
まあ、すでにDBに格納されているデータから情報を取り出しているのであ当たり前ですね。。。

5.他にどんな情報が取れるのかは要確認・・・

今回は指定したURLに関して以下の4つの情報が取れることがわかりました。

categories
last_analysis_date
times_submitted
last_analysis_stats

しかし、その他どんな情報がとれるのかについては調べきることができませんでしたので、今後の課題にしておきたいと思います。

<参考サイト>

・VirusTotalの公式APIライブラリ「vt-py」を使ってみた。(たれながし.info)
https://tarenagashi.hatenablog.jp/entry/2021/06/09/223105
・vt-py Quickstart(VirusTotal)
https://virustotal.github.io/vt-py/quickstart.html#get-information-about-an-url

PythonにてPandasを使ってWebページのテーブルのセルの内容を抜き取ってみた

前回はRequests と Beautiful Soupを使ってWebページの特定のタグの情報を読み込んで見ました。

https://k2-ornata.com/python_web_scraping/

しかし、そのライブラリだけだとWebページ内のテーブルの情報を抜き出すのは大変そうだなあとおもっていました。

そんな中、Pandasというライブラリを使えば簡単にテーブルの情報を抜き出せるようでしたので、トライしてみました。

1.ライブラリの読み込み

まずは必要なライブラリをPyCharmに取り込みます。
今回、Pandasとlxmlを初めてPyCharmで利用するので、以下のように取り込んでいます。

ライブラリの取り込み

2.プログラミング

そしていつものように^^、おもむろにプログラミングします。

なお、今回スクレイピングしているサイトも、前回同様、私のブログ
https://k2-ornata.com/security-countermeasure/
となっています。

import pandas as pd

url = 'https://k2-ornata.com/security-countermeasure/'
dfs = pd.read_html(url)

# table count
print(len(dfs))

# head 5 line print
print(dfs[0].head())

# cell[0,0] print
print(dfs[0].iat[0,0])

# cell[0,1] print
print(dfs[0].iat[0,1])

# first column only print
print(dfs[0].iloc[:,[0]])

簡単に内容を説明すると、

最初の3行・・・ライブラリを読み込んだあと、Webページを読み込み、dfsに格納
次の2行・・・Webページ内のテーブルの数を表示
次の2行・・・最初のテーブルdfs[0]の先頭5行を表示
次の2行・・・最初のテーブルdfs[0]のセル[0,0]の内容を表示
次の2行・・・最初のテーブルdfs[0]のセル[0,1]の内容を表示
最後の2行・・・最初のテーブルdfs[0]の1列目[0]を表示

となっています。

そして以下が実行結果です。(見やすくする為に各printの間に1行入れています。)

13

      0                                                  1
0    概要  CSPM(Cloud Security Posture Management)クラウドの設定...
1  参考文献  改めて知るCWPP(Cloud Workload Protection Platform)と...

概要

CSPM(Cloud Security Posture Management)クラウドの設定に不備がないかチェックし、不備があれば自動的に修正までしてくれる製品と思われる。CWPP(Cloud Workload Posture Management)オンプレやクラウド上の様々なワークロード(※)における脆弱性管理やセキュリティ保護を行う製品と思われる。両者をどちらもカバーする製品として、パロアルト社のPrisma Cloudがあり、CNSP(Cloud Native Security Platform)と読んでいる。※ワークロードっていう言葉はいつきいてもあまりピント来ませんが、物理マシンや仮想マシン、コンテナ、サーバレスなどを指すらしい。

      0
0    概要
1  参考文献

3.Pamdasの使い方

Pandasを使うと今回のように、Webページ内のテーブルの数や、特定のテーブルの情報、さらにその中テーブルの中の特定のセルなどの情報が読み取れるようです。

とりあえず今回使用したものを簡単に説明しておきます。

len(dfs)

dfs の中にWebページ内の全てのテーブル情報が書き込まれ、len()関数を使うことで、そのテーブルの数(Webページに全部で何個テーブルがあるか)をカウントできます。

dfs[テーブル番号]

dfs[テーブル番号]という形で指定することで、ページの先頭から何番目のテーブルの情報かを指定することができます。

dfs[テーブル番号].head()

.head()関数を使うことで、指定したテーブルの先頭から5行目までを取得することができます。

dfs[テーブル番号].iat[行,列]

.iat[行,列]を使うことで、指定したテーブルのどのセルの情報を取得するかを指定することができます。

dfs[テーブル番号].iloc[:,[列]]

.iloc[:,[列]]を使うことで、指定したテーブルの特定の列の情報だけを取得することができます。
なお、”:”の記述はとりあえずおまじないとおもっておけばいいと思います。(あまりよくわかってないのでー。)

4.最後に

過去3回に渡ってPythonを触ってみましたが、Pythonにはいろんなライブラリがあり、それをうまく使えばいろんなことがとても簡単にできるなあと実感しました。

Pythonが人気があるのもわかる気がしますね。

<参考サイト>

・Python, pandasでwebページの表(htmlのtable)をスクレイピング(note.nkmk.me)
https://note.nkmk.me/python-pandas-web-html-table-scraping/
・pandasで任意の位置の値を取得・変更するat, iat, loc, iloc(note.nkmk.me)
https://note.nkmk.me/python-pandas-at-iat-loc-iloc/

PythonにてRequestsとBeautifulsoupのライブラリを使い、自分のWebサイトをスクレイピングしてみた

最近お仕事でWebのスクレイピングの話題がホットになっているので、実際、どういうところまでPythonを使ってできるのか試してみました。

なお、PythonにはWebからデータを取得してくるライブラリがたくさんあるようなのですが、今回は、

・Webサイトからのデータ取得・・・Requests
・HTMLデータの解析・・・Beautifule Soup

を利用することにしました。

他にもSeleniumというものもあり、そのライブラリを使えばHTMLデータの取得から解析までまとめてできるようなんですが、どうやら少し重いらしいので、それぞれ専門のライブラリに任せてみることにしました。

なお、Python開発環境のセットアップや必要なライブラリのインポート方法については以下の記事で書いていますので、もしよければ読んでみてください。

https://k2-ornata.com/mac_python_install_and_excel_operation/

ではさっそくやってみます。

1.ライブラリの読み込み

PyCharm を起動し新しいプロジェクトを作成した後、先ほどのRequests とBeautiful Soupのライブラリを取り込みます。

ライブラリの追加

ぶっちゃけ、これで準備は完了です。

2.プログラミング

それでは、おもむろにプログラミングを始めましょう。

ちなみに今回スクレイピングするサイトは自分のブログサイト
https://k2-ornata.com/security-countermeasure/
になっています。

そして、今回書いたコードは以下の通りです。

import requests
from bs4 import BeautifulSoup

url = "https://k2-ornata.com/security-countermeasure/"

res = requests.get(url)

soup = BeautifulSoup(res.content, "html.parser")

ttl_tag = soup.select("h1")

ttl_txt =soup.head.title.text

hed2 = soup.find('h2', id='cspm').text

print(ttl_tag,':',ttl_txt,':',hed2)

全部で9行ありますが、ざっくり言うと、

最初の2行・・・ライブラリ(Requests, Beautifule Soup)の読み込み
次の3行・・・RequestsをつかってWebサイトデータの読み込み
次の3行・・・Beautiful soupをつかってHTMLデータから必要なデータを抽出
最後の1行・・・抽出したデータを”:”で区切って画面に表示

となっていて、実行結果はこちらです。

[<h1 class="entry-title">セキュリティ対策技術</h1>] : セキュリティ対策技術 – k2-ornata : CSPMとCWPP

うーん、結構簡単に出来ちゃいました。

でもWebサイトのHTML構造をちゃんと把握しないとデータの抽出がうまくいかないので、そのあたりの解析が難しいかなと思いました。

また、Beautiful Soupでデータを抽出するときに、いろいろなやり方があるようなのでそれをマスターするのも大変そうです。

ということで、以下に少しBeautiful Soupの使い方をまとめておきます。

3.Beautifule Soup によるデータ抽出方法

1.select関数を使う

“soup.select(“h1”)”のように記載すると<h1></h1>タグで囲まれたデータをタグも含めて取ってきてくれるようです。

今回の実行結果では以下のようなデータが取れました。

[<h1 class="entry-title">セキュリティ対策技術</h1>] 

2.head.title.textみたいに書く^^

“soup.head.title.text”みたいに書くと、HTMLデータの中の「ヘッダー」の中の「タイトル」についてテキストのみを取ってきてくれるみたいです。

今回の実行結果では以下の部分が該当します。

セキュリティ対策技術 – k2-ornata

正直、タイトルをどうやって判断しているのかよくわかっていません。なんで後ろに” – k2-ortana”ってついてくるんだろう?^^

3.find関数を使う

“soup.find(‘h2′, id=’cspm’).text”のように記載すると、<h2></h2>タグで囲まれたもののうち、”id”属性が”cspm”となっているものを選んで、テキスト属性だけ取り出してくれるようです。

今回の実行結果では以下の部分が該当します。

CSPMとCWPP

4.最後に

今回実際スクレイピングしてみて、とっつきとしては思った以上に簡単だなあと思いました。

ただし、属性のついていないタグのデータとか、表のセルを指定してデータを取得するとかやりだすと、いろいろテクニックやライブラリを使わないといけなさそうです。

次に機会があればもう少しつっこんで試してみたいと思っています。

<参考サイト>

・PythonでWebスクレイピングをする方法を解説!【入門編】(Udemy)
https://udemy.benesse.co.jp/development/python-work/web-scraping.html
・[Python入門]Beautiful Soup 4によるスクレイピングの基礎(@IT)
https://atmarkit.itmedia.co.jp/ait/articles/1910/18/news015.html

またまた竹内謙礼さんの本「販売魔女と死の眼鏡」を読んでみました

最近、本を読むとなると仕事や私生活に役立ちそうなものを中心に買いあさっています。

その中でも、今、私の中で大注目なのは竹内謙礼さんのビジネスノベルシリーズになります。

その中で今回は「販売魔女と死の眼鏡」を読んでみました。

販売魔女と死の眼鏡(PHP文庫)

一見、他の本とくらべると軽い感じ?

正直、いろんなサイトのレビューを見ている感じ、他の本とくらべると評価が低いように思えました。

また本の厚さも若干薄いので、そこも少し購入をためらわれるところかもしれません。

しかし、実際に読んでみると、ビジネスマンとして考えなければならないことがしっかり書かれておりました。

人のこころが読めるとビジネスは楽勝なのか?

この本の主人公は、ある人にあこがれて会社を退職し、独立してバックの販売店を始めるのですが、最初はなかなかうまく売り上げが伸びません。

そんな中、突然、人の心が読める黒い眼鏡を手に入れます。

そして、それをビジネスに利用しようとしますが、人のこころが読めたからといってそう簡単にうまくいかず、悪戦苦闘していきます。

独立を考えている人にぜひおすすめ

その苦闘の中で、主人公は顧客が望んだとおり物やサービスを提供するだけではダメだということに気がついていきます。

もし私が同じように独立して会社を始めたとしても、この主人公と同じような考えに囚われ、この本の最後に得られるような考え方はできないでしょう。

これから独立を考えている人がいたら、ぜひ、この本を読んでみることをお勧めします。この本で得られる視点は、ビジネスを継続的に成長させていくために非常に重要だと思います。

また会社勤めをしている場合でも、単純にお客様の要望に応えていくだけでは疲弊していくだけで、仕事や自分自身の継続的な飛躍にはつながらないでしょう。
会社の中で自分がステップアップしていくためには非常に重要な考えかただと思います。

最後に

もしここまで読んできになる人がいたら、ぜひ買って最後まで読んでみてください。

また、竹内謙礼さんの他の本のレビューのリンクを貼っておきますので、その他にどんな本を書かれているのか気になる方は、こちらも見てみてもらえるとうれしいです。

https://k2-ornata.com/books_souzoku-kamen/

MacにPythonの開発環境(PyCharm)をインストールしてExcelファイルの内容を読み込むプログラムを動かしてみた

最近、セキュリティの自動化製品であるSOARの勉強をしておりますが、SOARからpythonのプログラムを動かせばなんでもできそうだなとおもっています。

そこで、今後の為にpythonの勉強をしてみることにしました。

1.python3のダウンロード&インストール

Macでpython3の環境を整える方法は以下の2種類の方法があります。

a.Webサイトからインストーラをダウンロード
b.Homebrewでインストール

今回は a.のWebサイトからダウンロードする方法でインストールしてみました。この場合、以下のサイトにアクセスします。

https://www.python.org/downloads/

すると以下のサイトが表示されるので、上部にあるメニューから「Downloads」-[macOS]を選択します。

Pythonのダウンロードサイト

すると、mac用のインストーラがいくつか表示されていますので、そこから好きなバージョンをダウンロードします。

ダウンロードが終わったら、それをマウスでダブルクリックするとインストールされます。

これで基本的なpythonの開発・実行環境は準備できました。

しかし、このインストーラに含まれる開発環境は基本的な物なので、使いがってはあまりよくなさそうです。

そこで、PyCharmというVisual Studio的な開発環境をインストールします。

2.PyCharmのインスール

PyCharmは以下のサイトからダウンロード可能です。

https://www.jetbrains.com/ja-jp/pycharm/

上記URLにアクセスすると以下のようなサイトが表示されるので、真ん中の「ダウンロード」をマウスでクリックします。

PyCharmのダウンロードサイト

するとさらに以下の画面が表示されるので無償版の Community のダウンロードボタンを押してダウンロードします。

PyCharmのダウンロード画面

ダウンロード後のインストールについては、他のアプリケーションと同じ操作方法で実施します。

3.PyCharm の起動

PyCharm を起動すると以下のウィンドウが表示されますので、「New Project」を選択します。

PyCharm 起動直後

すると新しいプロジェクトの設定画面が出てきますので、とりあえず赤枠のプロジェクト名だけ設定し、「Create」ボタンを押します。

新しいプロジェクトの設定画面

これで開発画面が開きます。

4.Excelを扱うライブラリopenpyxlのインストール

開発画面からプログラムを書く前に、Excelを扱う為のライブラリをインストールしておきます。

PyCharm のメニューから「Preferences」を選択します。

プリファレンスの選択

Preferencesのウィンドウが出たら左側のペインから「Project:<プロジェクト名>」-「Python Interpreter」を選択します。

python interpreterを選択

さらにメインウィンドウにある小さな「+」を押すと以下の画面が表示されますので、openpyxlと打ち込んで検索し、一番下にある「Install Package」ボタンを押しインストールします。

openpyxlライブラリの選択

5.Excelファイルのセルの情報を読み込むプログラムの記述

これでExcelファイルを扱う開発環境が整いましたので、プログラムを作成します。

指定したファイルのセル(この場合、B1セル)を読み込むだけであれば、以下のような簡単なプログラムで作成できます。

import openpyxl

wb = openpyxl.load_workbook('../../Downloads/sample.xlsx')
sheet = wb['sample']
value = sheet.cell(row=1, column=2).value
wb.close()

print(value)

なお今回読み込んでいるファイルの情報は以下の通りです。

ファイルの場所:ダウンロードフォルダ直下
ファイル名:sample.xlsx
シート名:sample

6.PyCharmでのプログラム実行

プログラムを書いたらそれを実行します。
実行についてもPyCharm上で行うことができます。

プログラムを記述したメインの画面でマウスを右クリックし、「Run ‘main’」を選択します。

pythonの実行

実行するとウィンドウの下側に実行結果を表示する画面が表示されます。

python実行結果

今回の場合、B1セルに”共通”という文字が書かれているのですが、その文字が赤枠の部分に正しく出力されています。
(なんかその手前にワーニングっぽいものが出てますが、とりあえず無視で。。。)

7.ターミナルで実行する場合

今回開発したプログラム”main.py”はターミナル上でも実行することができますが、別途、Homebrewなどでpythonの環境やopenpyxlを整えておく必要がありそうです。

その上で以下のコマンドを実行すれば、同様の結果が得られます。

python main.py

<参考サイト>

・Pythonの開発環境を用意しよう!(Mac)(https://prog-8.com/docs/python-env)
・PythonでExcelを操作し自動化する方法! 読み込みや書き込み、グラフまで徹底解説(https://camp.trainocate.co.jp/magazine/python-excel/)
・PyCharmとは!? 特徴と使い方入門(https://zero-cheese.com/4258/?utm_source=pocket_mylist)
・PythonでExcelファイル(xlsx)を読み書きするopenpyxlの使い方(https://note.nkmk.me/python-openpyxl-usage/?utm_source=pocket_mylist)