市場情報と雑学と 〜明日使える知識を〜

某大手電気メーカーに勤める社内SE。マーケティング的なことも業務の中に入ってきているなかで有望な市場分析を発信していきます。また、導入してきたなかで便利な小物があれば紹介していきたいと思います。

Zoomのセキュリティを高める設定

Zoomのセキュリティを高める設定

 

皆さんテレワーク行っていますか?

 

コロナウイルスの影響で大いに進んだ働き方改革ですが、客先への訪問禁止を受け、急速にWeb会議システムに注目が集まっています。

 

今日はそんなWeb会議システムのZoomに注目して紹介していきたいと思います。

 

 

 

「そもそもZoomってなんなの?」

「テレワークでZoomを使いたいんだけどどうやって使うの?」

「セキュリティが甘いらしいけど、どう甘いの?」

「安全に使うための設定方法はどうやるの?」

 

 

今回の記事ではZoomのインストールから共有会議の参加方法から説明します。

また、Zoomのセキュリティが弱いという不安を解消するためセキュリティの弱点と対策法を書いていきます。

 

 

Zoomの使い方

そもそもZoomとは?

Zoomとは、Web会議のシステムであり、昨今のコロナ事情の中で急速に注目を集めています。主催者のみIDを取ればいいので簡単にWeb会議をすることができます。

ただし、セキュリティについてはユーザビリティトレードオフでありセキュリティを強化するには設定で工夫する必要があります。

 

 

zoom.us

 

Zoomの利点(メリット)

無料であること

有料枠では一回の会議で40分以上の会議を行いたい場合などは必要です。

 

サインインIDが不要

Zoomは主催者のみアカウントを取得する必要があるものの、参加者はIDが不要です。

セキュリティ強化のため設定により会議にサインインIDが必要とする設定も可能です。

ブラウザさえあればどのデバイスでも動作する

 ブラウザベースで動くZoomはPCだけでなくスマホでのアクセスも可能です。

Web会議システムならではの画面共有も可能

 画面共有も画面の一部を共有する、といった使い方が可能です。

録音・録画もできる

クラウドに保存する方法と、ローカルに保存する方法があります。出席した会議を自動で録画してくれる機能もあります。

 

Zoomのインストール

ZoomにはWeb版とアプリをインストールする2種類の会議方法があります。

公式ではアプリをインストールすることを推奨しております。

しかし、社内環境ではアプリをインストールすることが許されていないケースもあり

Web版での使用もありうると考えます。

 

今回はZoomのアカウントを作成してみます。

1.右上のサインアップをクリック

Zoomのサインアップ

 2.誕生日を入力して、続けるをクリック

Zoomのサインアップ 誕生日の入力

3.登録するメールアドレスを入力してサインアップ、登録メールが発信されます。

Zoomのサインアップ メールアドレスの登録

Zoomのサインアップ 確認メールの送付

4.登録メールからメールアドレスを承認します。

Zoomのサインアップ メールアドレスのアクティベーション

5.名前、役職、組織名、メールアドレスを入力し、チェックボックスにすべてチェックをいれ続けるをクリック

 

Zoomのサインアップ 氏名の入力

6.パスワードを入力し、アカウントの作成は完了

Zoom パスワードの設定


7.招待する人がいれば入力します。そのままスキップでOK

Zoom 招待メールの作成

Zoomアカウント作成完了



ミーティングの作成

 ミーティングの作成はマイページのミーティングから作成を行います。

 

Zoomミーティングの作成

 

それぞれの項目の推奨設定は下記となります。

設定項目 説明
トピック 参加者から見える議題のタイトル
説明 参加者から見えない議題の説明
開催日時 そのまま。会議をする日時を設定
所要時間 会議時間。無料プランは40分まで
タイムゾーン GMT+9:00 大阪、札幌、東京
定期ミーティング 複数回スケジュールする場合は入力
ミーティングID 自動的に生成を推奨
ビデオ どちらもオフで良い。後から設定は変えられる
音声 コンピューター通話のみを推奨。
ホストの前の参加を有効にする 待機室を有効にする場合はチェック推奨
入室時に参加者をミュートにする そのまま。複数人が同じ部屋で参加する場合はオンにすることを推奨
待機室を有効にする 有効を推奨。ホスト以外の参加者がURLやID,パスワードなどでミーティングに参加したとき,ホストの許可待ちの状態にできる
認証されているユーザーしか参加できません Zoomアカウントを持っている場合のみ参加できる。チェック非推奨だが機密情報を取り扱う場合はチェック推奨
ローカルコンピュータにミーティングを自動記録 ミーティングの画面,音声を動画で記録,自動保存可能。セキュリティ的に非推奨

Zoomミーティングの設定


ミーティングの共有

招待状をコピーするをクリックしてメール文面をコピーするだけでOKです。

パスワードなどは求められたら入力するものとおぼえておきましょう。

Zoomミーティングの共有

 

Zoomのセキュリティ

初期設定ではGoogleの検索結果から見えちゃったりするのが問題だったりします。

見知らぬ第3者が会議の中に入れたり、パスワードを設定していない場合、ミーティングIDがわかれば誰でも会議に参加できるZoomの仕様に問題があります。

しかし、対策を取ることでセキュリティ強度は上げることができます。

 

また、Zoomのドメインを偽装したフィッシングも多いので注意が必要です。

2020年頭からこれまでに“zoom”の文字列を含む新ドメインが3,300も確認されているそうです。(参考:

https://is702.jp/news/3666/

 

実際にZoomの脆弱性を上げるために必要なこと

・ランダムパスワード生成

・ミーティングにパスワードを設定する(ワンクリックURLは使わない)

・待機室を有効にする

 

 

Zoomの設定はサインイン後に設定タブから変更ができます。

Zoomの設定タブ

Zoomのパスワードは下記の4点で設定できます。

通常すべてONになっていますが、

「ワンクリックで参加できるように、ミーティングリンクにパスワードを埋め込みます。」はOFFにしておきましょう。

 

これでURLにパスワードが埋め込まれず、参加者は主催者から送られたパスワードが必要となります。

Zoomのセキュリティ強度を上げるパスワード設定


 待機室を使う

 

三者がそのまま会議に入ってこれないよう、待機室を使いましょう。こちらも設定から変更することができます。

Zoom待機室の設定

まとめ

 いかがでしたでしょうか?

今回の記事では

・Zoomの導入

・Zoomのセキュリティを高める設定

をまとめました。

 

 

なんとなくZoomのセキュリティは弱んじゃないの?という知識を持っている方は多いと思いますが、設定次第で強度は高めることができます。

 

これを機会にZoomをいれてみても良いのではないでしょうか。

Pythonでファイル処理(csv・sqlite)をまとめてみた

Pythonのファイル保存(csvやsqlite3)関係をまとめてみた


 

 Pythonでいろいろな処理を自動化し

 

 ログなどを残す際はファイル出力が必要となります。

 

今回の記事では数あるPythonの利用方法の中で

 

 

Pythonでデータを取得したのはいいけど保存はどうしよう」

「外部ファイルへのアクセス方法は?」

「より簡単にアクセスできないか」

 

といったファイル保存に特化した内容をまとめています。

 

使うときには忘れがちな保存関係をまとめました。

 

それでは実際のコードを用いてファイルの読み書きを行います。

 

 

CSVでファイルを読み書きする

学術系では必須のcsvの入出力について学びます。

 

 

 一般企業ではエクセル形式への読み書きが多いと思います。

 

 

csvは軽量のテキストなのでデータ処理の基本となります。

 

 

一次元配列のcsvへの書き込み

import csv

list = ["python","csv","test"]

with open('sample1.csv', 'w') as f:
    writer = csv.writer(f, lineterminator='\n') # 改行コード(\n)を指定しておく
    writer.writerow(list)     # listを渡す

二次元配列のcsvへの書き込み

 

二次元配列の書き込みにはwriterowsメソッドを使います。

 

list2 = [[1, 2, 3], [10, 20, 30], [100, 200, 300]]
with open('sample2.csv', 'w') as f:
    writer = csv.writer(f, lineterminator='\n') # 改行コード(\n)を指定しておく
    writer.writerows(list2)     # 二次元配列の場合

 

withを使わずにCSVに書き込みする

 with句を使わずに下記のように書くこともできます。

 

読み書きモードは指定する モードは

 

r 読取 w 上書 a 追記

 

となります。

import csv

f = open('sample3.csv', 'a')

writer = csv.writer(f, lineterminator='\n')
writer.writerow(list)
writer.writerows(list2)

f.close()

 

csvファイルの読み込み

 

import csv

file = './sample1.csv'
f = open(file, 'r')
rows = csv.reader(f)

for row in rows: # 一行ずつ読み出す
    print(row)

f.close()

pandasを使ってcsvを読み取る

 簡単にデータフレーム化もできます。

import pandas as pd

df = pd.read_csv('sample1.csv')

 

 

sqlite3を使ってデータベースに書き込む

sqlite3を使ってデータベースを作る

import sqlite3
from contextlib import closing

dbname = 'database.db'

with closing(sqlite3.connect(dbname)) as conn:
    c = conn.cursor()

    # executeメソッドでSQL文を実行する
    create_table = '''create table users (id int, name varchar(64),
                      age int, gender varchar(32))'''
    c.execute(create_table)
    conn.close()

 

sqlite3を使ってデータを挿入する

 

import sqlite3
from contextlib import closing


with closing(sqlite3.connect(dbname)) as conn:

    c = conn.cursor()

    # SQL文に値をセットする場合は,Pythonのformatメソッドなどは使わずに,
    # セットしたい場所に?を記述し,executeメソッドの第2引数に?に当てはめる値を
    # タプルで渡す.
    sql = 'insert into users (id, name, age, gender) values (?,?,?,?)'
    user = (1, 'Taro', 20, 'male')
    c.execute(sql, user)

    # 一度に複数のSQL文を実行したいときは,タプルのリストを作成した上で
    # executemanyメソッドを実行する
    insert_sql = 'insert into users (id, name, age, gender) values (?,?,?,?)'
    users = [
        (1, 'Taro', 20, 'male'),
        (2, 'Shota', 54, 'male'),
        (3, 'Nana', 40, 'female'),
        (4, 'Tooru', 78, 'male'),
        (5, 'Saki', 31, 'female')
    ]
    c.executemany(insert_sql, users)
    conn.commit()

    select_sql = 'select * from users'
    for row in c.execute(select_sql):
        print(row)
    conn.close()

 

 

pandasを使ってデータベースの読み書きをする

 

 

 

pandasを使ってsqlite3を読みだす

 

import pandas as pd
import sqlite3


dbname = 'database.db'
conn = sqlite3.connect(dbname)
c = conn.cursor()

df_sql = pd.read_sql_query("select * from users", conn)
conn.close()

 

 

さらにdataframeでsqlite3に行追加する

df_ins = pd.DataFrame(6, 'yuta', 24, "male", columns=df_sql.columns)
df_ins.to_sql("users", conn,  if_exists='append', index=None)

 

 

 テーブルまるごとをDataFrameのレコードで入れ替える場合はif_exists='replace'とする。 

 

 

 

 

 

Python学習のおススメ

Pythonはパターンで学習できます。

実際のコードを写経して身に着けるのがおすすめです

 

簡単な実行文から体系的に学べるPyQがおすすめです。

 

ブラウザ上でPythonに特化した写経を1000個以上実施可能です。

 

初学習で終える自信がない方向けの最初の一冊は

Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ」がおすすめです。

 

2冊目は(あるいは学習意欲の高いかたは)Pythonの基礎知識が隅々まで解説されている「入門Python3」がおすすめです。

 

業務で自動化をしたい、など目標がふんわりとしている方には

「退屈なことはPythonにやらせよう」もおススメです。

こちらの本は自動化に集中した内容となっており、流し読みで自分のスキルを高めることができます。僕もだいぶお世話になりました(笑)

 

 

有料の動画講座に関して言えばUdemyさんがおすすめです。

 

こちらのサイトは初学がある程度すすんでいる方向けです。

 

有料だけに講座ごとのジャンルが豊富で学びたい講座を選択して選ぶことが出来ます。
PythonではAI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで10万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます。

まとめ

 

今回の記事では

 

・ファイル(csv)の読み書き

・sqlite3を使用したデータベースへの書き込み

・pandasを利用したデータベースの読み書き

 

をまとめました。

 

お疲れさまでした

Pythonでメール通知とSlack通知

Pythonでメール通知やSlack通知を行う

 

Pythonは自動化を行う上で有益な言語です。

 

 

自動化を行う上で知っておくと便利な知識はズバリ通知です。

 

 

「メールで処理が終わった後に通知が欲しい」

「Slackに処理完了の通知が欲しい」

 

など、PDCAを回す上で処理完了の通知が来ると便利です

 

 

今回の記事では「通知」に焦点 を当てて紹介していきます。

 

 

 

メール通知

SMTPを使って作業を通知

 

 

単純な通知を送信したいときの通知方法を紹介します。

 

 

Pythonにはsmtplibという標準ライブラリがあり、基本的にはMIMEを作成して送信するだけです。

 

 

ちなみにMIMEとは

MIMEとは、TCP/IPネットワーク上でやり取りする電子メールで、当初の規格で唯一記載することができたASCII英数字以外のデータ(各国語の文字、添付ファイルなど)を取り扱うことができるようにする拡張仕様。

 

です。

 

早速smtplibでメール送信を行っていきましょう 

 

認証なしの場合

 社内での環境などSMTPサーバーへの認証が不要な場合こちらでOK

import smtplib
from email.mime.text import MIMEText

# 送受信先
to_email = "発信先のアドレス@xxx.com"
from_email = "発信者のアドレス@xxx.com"

# MIMETextを作成
message = "メール本文"
msg = MIMEText(message, "html")
msg["Subject"] = "テストメール"
msg["To"] = to_email
msg["From"] = from_email
 
# サーバを指定する
server = smtplib.SMTP("メールサーバー", ポート番号)
# メールを送信する
server.send_message(msg)
# 閉じる
server.quit()
    

 

認証ありの場合

 server.send_message(msg)の前に、認証アカウントとパスワードを入力すればOKです。

import smtplib
from email.mime.text import MIMEText

# 送受信先
to_email = "発信先のアドレス@xxx.com"
from_email = "発信者のアドレス@xxx.com"

# MIMETextを作成
message = "メール本文"
msg = MIMEText(message, "html")
msg["Subject"] = "テストメール"
msg["To"] = to_email
msg["From"] = from_email
 
# サーバを指定する
server = smtplib.SMTP("SMTPサーバー", ポート番号)

# 認証を行う
server.login(account, password)
# メールを送信する
server.send_message(msg)
# 閉じる

 

Gmailを利用したメール通知

 

PythonでGmailを使って通知を送信する

 

続いてGmailを用いてメール通知を発信する方法を紹介します。

 

SSLを用いて接続します。

 

 

 

Gmail側の設定

 

GmailPythonアプリの認証を行うためには

 

http:// https://support.google.com/accounts/answer/6010255

の手順どおり、「安全性の低いアプリ」を有効にする必要があります。

 

Gmailの設定で変更ができますが、セキュリティ強度が落ちるため、専用のアカウントを用意するのが望ましいです。

 

 

 

 

上記URLへアクセスしたのち、セキュリティをクリックします。

 

Gmailの設定(セキュリティ)を行う

 

安全性の低いアプリのアクセスへスクロールし、アクセスを有効にします。

 

安全性の低いアプリでのアクセス

 

安全性の低いアプリのアクセス無効から有効へ変更

 

これで準備はOKです。

 

Gmailでメールを発信する

 

MIMEの作り方はsmtplibのときと同様です。

 

import smtplib
import ssl
from email.mime.text import MIMEText

# 以下にGmailの設定
gmail_account = gmailアカウント
gmail_password = gmailパスワード
# メール送信先
mail_to = "送信先のアドレス@xxx.com"

# メールデータ(MIME)の作成
subject = "メール送信テスト"
body = "メール送信テスト"
msg = MIMEText(body, "html")
msg["Subject"] = subject
msg["To"] = mail_to
msg["From"] = gmail_account

# Gmailに接続
# メール送信処理
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login(gmail_account, gmail_password)
server.send_message(msg)
server.quit()
print("ok.")

 

SSLでメール発信するためには接続時に指定してあげればOKです。

 

 

# Gmailに接続 
server = smtplib.SMTP_SSL("smtp.gmail.com", 465,
context=ssl.create_default_context())
server.login(gmail_account, gmail_password)
server.send_message(msg) # メールの送信
print("ok.")

 

 

添付ファイルをつける

 

添付ファイルをつけて送信する場合は添付ファイルのパスを設定し、添付処理を行います。

 

import smtplib
import ssl
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email import encoders

#Gmailの設定を書き込む
gmail_account = gmailアカウント
gmail_password = gmailパスワード
# メールの送信先 --- (*2)
mail_to = "送り先のアドレス@xxxx.com"
# 添付ファイルのパス
file_path = "./test.zip"

# メールデータ(MIME)の作成
subject = "添付ファイル送信テスト"
body = "添付ファイルの送信テスト"
encoding = 'utf-8'
msg = MIMEMultipart()
msg["Subject"] = Header(subject, encoding)
msg["To"] = mail_to
msg["From"] = gmail_account
msg.attach(MIMEText(body, 'plain', encoding))

# 添付ファイル(ZIP)をメールに追加
attach = MIMEBase('application','zip')
with open(file_path, "br") as f:
    attach.set_payload(f.read())
encoders.encode_base64(attach)
attach.add_header('Content-Disposition', 'attachment',
    filename='attachment.zip')
msg.attach(attach)

# Gmailに接続
server = smtplib.SMTP_SSL("smtp.gmail.com", 465,
    context=ssl.create_default_context())
server.login(gmail_account, gmail_password)
server.send_message(msg) # メールの送信
server.quit()
print("ok.")

 

 

slackに処理完了通知を送る

 

slackに処理完了通知を送る

slackへ完了通知を送る際は、webhookを利用するのが簡単です。

 

 

webhookの参照方法

 https://slack.com/signin?redir=/apps/new/A0F7XDUAZ--incoming-webhook-
上記へアクセスしサインインします。

 

slackへのサインイン

 

 

通知したいチャンネルを選悪し、Incoming Webhookインテグレーションの追加をクリック

 

送りたいチャンネルを選択する

 

 

webhook URLが記載されているので、コピーして控える。

 

slackのWebhookURLを取得する

実際にslackへ通知を送ってみる 

 slackへの通知はjsonをpostすればOKです。

 

import json

import requests


# webhookURLを指定
webhook_url = "https://hooks.slack.com/services/TPGNV7872/BUUBZKAHX/xxxxxxxxxxxx"

# 送信するテキストを定義
text = "PythonでSlackにメッセージを送る"

# Slackに送信する
requests.post(webhook_url, data=json.dumps({
    "text": text
}))

 

プロキシサーバーを経由してのアクセスはrequestsにploxies引数を追加してやればOK

 

import json

import requests

net_proxies = {'http': 'プロキシサーバー:ポート',
               'https': 'プロキシサーバー:ポート'
               }

# webhookURLを指定
webhook_url = "https://hooks.slack.com/services/TPGNV7872/BUUBZKAHX/xxxxxxxxxxxx"
text = "PythonでSlackにメッセージを送る"

# Slackに送信する
requests.post(webhook_url, proxies=net_proxies, data=json.dumps({
    "text": text
}))

 

まとめ

 

今回の記事では

 

・社内環境など不正アクセスを気にしなくて良い場合はsmtplibが楽

gmailで通知をする場合は専用のアカウントを用意する

・slackのwebhookの参照方法

 

 を紹介しました。

 

処理についても大事ですが、完了を自動化することで効率を飛躍的に上げることが出来ます。

 

 

Pythonを初期から学びたい!という方には

 

無料の学習サイトではドットインストールhttps://dotinstall.com/ がおすすめです。

 

ある程度の条件式やループなど初級の内容が動画でまとめられており入門編としてはこれをやっておけば問題ありません。

 

初学習で終える自信がない方向けの最初の一冊は

Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ」がおすすめです。

 

2冊目は(あるいは学習意欲の高いかたは)Pythonの基礎知識が隅々まで解説されている「入門Python3」がおすすめです。

 

業務で自動化をしたい、など目標がふんわりとしている方には

「退屈なことはPythonにやらせよう」もおススメです。

こちらの本は自動化に集中した内容となっており、流し読みで自分のスキルを高めることができます。僕もだいぶお世話になりました(笑)

 

 

有料の動画講座に関して言えばUdemyさんがおすすめです。

 

こちらのサイトは初学がある程度すすんでいる方向けです。

 

有料だけに講座ごとのジャンルが豊富で学びたい講座を選択して選ぶことが出来ます。
PythonではAI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで10万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます。

 

お疲れさまでした。

 

にほんブログ村 投資ブログ 投資情報へ
にほんブログ村

 

 

実際のサイトから読み取る初心者向けPythonスクレイピング入門

スクレイピングってSEOに便利らしいよ

そんな情報を得た僕はPythonによるスクレイピングを行うことにしました。

 

ほぼ0からの学習であり、cssやHTMLも少し読める程度…悪戦苦闘しながらなんとか公開できるまで学習を進めました。

 

WEB上に散らばっているPythonのコードは基本的な部分であり

記事にするにあたり

「そもそもスクレイピングって何?」

「実際のサイトから読み取っているコードを見たい」

チートシート的なタグの選択方法を見たい」

「name属性もクラスも無いテーブルってどうやって引っ張るの?」

 

と、いったところが僕が悩んだポイントでした。

 

今回は実例をもとに丁寧に解説したいと思いますので

題材としてソフトバンクの株主価値ともろもろのデータをスクレイピングします。

group.softbank

 

f:id:ysky24:20200302225054p:plain

上記リンクの数字の部分を抜き出します

この記事を読み終えることで、実際のサイトからどのように数字を抜き出すか?

がわかるようになります。

 

最低限、Pythonとbeautifulsoup、Chromeがインストールされていることを前提に話を進めていきます。

 

SEO対策としてのスクレイピングはまずはこの記事(基礎編)を終えた上で記事にしていきたいと思います。

 

 

スクレイピングとはそもそも何なのか?

 スクレイピングとは通常、WEBスクレイピングを指します。

クローリングとスクレイピングという言葉があります。

クローリングとスクレイピング

 

クローリングとは、複数のウェブサイトのリンクをなぞってウェブページを巡回することを言います。また、クローリングをするプログラムをクローラーと呼びます。

ブログを書いている人にはGoogleクローラーは馴染み深いと思います。

ページをインデックス化し、サイトへの検索を行うものがそれです。

 

スクレイピングとは、ウェブサイトのHTMLから必要なデータを取得する事を指します。

 

 

スクレイピングを行う上での注意事項

サイトによっては無許可のクローリング・スクレイピングを拒否している場合があります。

スクレイピングは人間ではできないような速度で多重のアクセスをかけることが可能なため、株価へのアクセスや電子ジャーナルなど規約で禁止されていることも多いです。

なお、twitterスクレイピングによるデータ取得が禁止されています。

 

 

 

必須ライブラリ beautifulsoupとrequests

beautifulsoup = 取得したHTMLを解析するライブラリ

requests = URLからHTMLを取得するライブラリ

と、なります。

 

 

beautifulsoupとrequestsのインストール

pip install beautifulsoup
pip install requests

でインストールできます。

 

Anacondaをインストールしている方はすでにどちらもインストールされているので不要です。

requestsでURLからHTMLを抜き出し、beautifulsoupで解析する

html = requests.get(url)

 

urlはhttp(s)://~で指定すればよいです。

プロキシ環境で使用する場合は、requests.get(url, proxies="プロキシサーバー")を指定してください。

 

それではソフトバンクのページから解析をしてみます。

 

beautifulsoupでHTMLから要素を抜き出す

import requests
from bs4 import BeautifulSoup

def getBS(url):
    html = requests.get(url)
    return BeautifulSoup(html.content, "html.parser")
    
soup = getBS("https://group.softbank/corp/irinfo/stock/stock_value/")

 

今回はPythonに標準でついてくるhtml.paeserを使用しています。

高速なlxmlを使用する場合は

 

pip install lxml

 

で、インストールしておきましょう。

 

lxmlはC言語で記載されており高速ですが複雑な構造には弱いとのこと

この辺は使い分けを筆者が良くわかっていません^^;

 

実際にソフトバンクのページから情報を抜きだしてみる

 実際のページから情報を抜き出すには、ソースコードを読み内容を探し出すことが大事です。

しかし、Chromeの開発者ツールでは対象のCSSセレクタXpathを簡単にコピーできる機能があります。

 

①欲しい情報を右クリック⇒検証

f:id:ysky24:20200308001655p:plain

 ②右側に対象のタグが出るため、Copy⇒Copy selectorでCSSセレクタをコピー

 

f:id:ysky24:20200308001806p:plain

 

③soup.select(’コピーしたCSSセレクタを張り付け’)

で簡単に取得することが出来ます。

 

import datetime

import requests
from bs4 import BeautifulSoup

def getBS(url):
    html = requests.get(url)
    return BeautifulSoup(html.content, "html.parser")

soup = getBS("https://group.softbank/corp/irinfo/stock/stock_value/")

elems_kabunushikati = soup.select(
    '#contents-body > div > div > div:nth-child(1) > div > table > tbody > tr > td > strong')

kabunushi = int(elems_kabunushikati[0].contents[0].replace(
    " 円/株", "").replace(",", ""))

 全体的なコードは上記になります。

cssセレクタをコピーしたあとはタグごと取得されるので.contents[0]でタグの中身を取得しています。

最終的には数値データでほしいので、円/株と桁区切りの「,」を置換して型変換しています。

まとめ

今回は、単純なつくりのサイトからスクレイピングする手法を紹介しました。

まとめると下記の

 

 ・WEBスクレイピングにはクローリングとスクレイピングがある

スクレイピングはHTMLから必要なデータを抜き出すこと

・requestsでURLからHTMLを、beautifulsoupでHTMLを解析する

ChromeCSSセレクタを使えば簡単な手順でスクレイピングできる

 

を、説明しました。

 

過去記事から読んでくれている方は一気にレベルが上がっているのですが

本サイトでは単純なところは説明を省こうと思います。

 

完全に初期知識が欲しい!という方には

 

無料の学習サイトではドットインストールhttps://dotinstall.com/ がおすすめです。

 

ある程度の条件式やループなど初級の内容が動画でまとめられており入門編としてはこれをやっておけば問題ありません。

 

初学習で終える自信がない方向けの最初の一冊は

Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ」がおすすめです。

 

2冊目は(あるいは学習意欲の高いかたは)Pythonの基礎知識が隅々まで解説されている「入門Python3」がおすすめです。

 

業務で自動化をしたい、など目標がふんわりとしている方には

「退屈なことはPythonにやらせよう」もおススメです。

こちらの本は自動化に集中した内容となっており、流し読みで自分のスキルを高めることができます。僕もだいぶお世話になりました(笑)

 

 

有料の動画講座に関して言えばUdemyさんがおすすめです。

 

こちらのサイトは初学がある程度すすんでいる方向けです。

 

有料だけに講座ごとのジャンルが豊富で学びたい講座を選択して選ぶことが出来ます。
PythonではAI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで10万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます。

 

お疲れさまでした。

 

にほんブログ村 投資ブログ 投資情報へ
にほんブログ村

Proxy環境下にあるPythonの設定方法

f:id:ysky24:20200306125609j:plain

企業でPythonを使用していると、PIPなどのコマンドラインが上手く動かないことがあります。

通常、一般の会社では外部のインターネットを閲覧する際にプロキシサーバーを経由します。

 

このブログでは企業のシステム情報担当者を読者に想定しているため

今日の記事ではプロキシの設定の仕方を学びます。

 

 

 

Proxyを調べる

プロキシの値がわかっていればこの手順は不要です。

直のアドレスではなく、自動構成スクリプトで設定されている場合は

 

import urllib.request

urllib.request.getproxies()

 

 で調べることが出来ます。

 

PythonのPIPでのProxy設定

 

 PIPでのプロキシは、--proxyオプションでプロキシサーバーを指定します。

 

 

pip install モジュール --proxy=http://user:pass@fooooo.proxy.local:8080

 

環境変数にプロキシを追加することでもいけるようです。


set HTTP_PROXY=http://user:pass@fooooo.proxy.local:8080
set HTTPS_PROXY=http://user:pass@fooooo.proxy.local:8080

 

AnacondaのCondaでのProxy設定

 

Anacondaのproxy設定は.「.condarc」ファイルに記述します。

デフォルトではありませんので、Anacondaのインストールフォルダにテキストを作り

 下記を保存しましょう。(インデントは忘れずに)

 

proxy_servers:
    http: http://[プロキシアドレス]:[ポート番号]
    https: https://[プロキシアドレス]:[ポート番号]

 

requestsライブラリのProxy設定

 スクレイピングで利用するrequestsライブラリにもプロキシの設定が必要です。

これはgetメソッドを実行するときに引数proxiesを指定してあげればOKです。

 

import requests

net_proxies = {'http': 'proxyserver:8080',
                      'https': 'proxyserver:8080'
                       }
html = requests.get(url, proxies=net_proxies)

 

まとめ

 

何番煎じかわかりませんが、Python系のプロキシ設定でつまりそうなポイントを列挙しました。

プロキシは意外といろいろなところで影響してくるので案外あなどれません。

通信関係でエラーが帰ってきたら疑うようにしましょう。

 

Pythonの学習には実際のコードとともに手を動かすことが重要です。

 

無料の学習サイトではドットインストールhttps://dotinstall.com/ がおすすめです。

ある程度の条件式やループなど初級の内容が動画でまとめられており入門編としてはこれをやっておけば問題ありません。

 

初学習で終える自信がない方向けの最初の一冊は

Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ」がおすすめです。

 

2冊目は(あるいは学習意欲の高いかたは)Pythonの基礎知識が隅々まで解説されている「入門Python3」がおすすめです。

 

業務で自動化をしたい、など目標がふんわりとしている方には

「退屈なことはPythonにやらせよう」もおススメです。

こちらの本は自動化に集中した内容となっており、流し読みで自分のスキルを高めることができます。僕もだいぶお世話になりました(笑)

 

 

有料の動画講座に関して言えばUdemyさんがおすすめです。

 

こちらのサイトは初学がある程度すすんでいる方向けです。

 

有料だけに講座ごとのジャンルが豊富で学びたい講座を選択して選ぶことが出来ます。
PythonではAI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで10万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます。

 

 

にほんブログ村 投資ブログ 投資情報へ
にほんブログ村

 

 

 

初心者向けPython講座 2日目 jupyterを使いこなそう

f:id:ysky24:20200305214624j:plain

昨日の記事ではPython(Anaconda)のインストール方法について執筆しました。

具体的なPythonの記述に入る前に、コーディング環境を整えるのがいいと思います。

 

Pythonスクリプト言語なので、手軽にコーディングができます。

やろうと思えばメモ帳でもプログラミングすることは可能です。

 

しかし、効率的な面でいうとやはりプログラミングには補助があったほうが効率が良いです。

 

今回はAnacondaについてくるスクリプトである、jupyterについて説明したいと思います。

 

とはいえ、そんなに難しい話ではありません。

この記事を読まれている方は

「jupyterって何?」

「jupyterを使う利点は?」

「jupyterの効率的な使い方は?裏技は?」

と、いったことが気になるポイントかと思います。

 

 

今回の記事では実際にjupyterを動かしてみて、プログラミングの階段をステップアップしてもらえれば幸いです。

 

今回の記事も例によってWindows10での使い方を解説していきます。

Anacondaをインストールしていない方は下記をご確認ください。

 

 

ysky24.hatenablog.com

 

 

 

jupyter(jupyter notebook)とは 

通常Pythonのプログラムは、○○.pyにメイン関数を書いて実行する or インタープリターで対話式に実行するの2種類で実行します。

 

短いプログラムであれば問題ありませんが、関数ごとの挙動などをステップ実行したい、ということは多々あります。

 

jupyterとは、ブラウザで起動するプログラムで、ノートブックと呼ばれる形式にコードを書きこんでいきます。

 

ノートブックには

 

・セル単位で実行できるプログラム記載領域

・プログラムの説明がMarkdownで記載できる

・実行の統計結果グラフをノートブック上で確認できる

・ブラウザで実行できるため、OSに依存しない

 

という機能を持ちます。

 

jupyter(jupyter notebook)の使い方・インストール方法

 

jupyterのインストール

 

前回の記事でAnacondaをインストールしている方にはもうすでにJupyter はインストールされています。

Pythonを単体でインストールされている方はコマンドライン

pip install jupyter

を入力し、jupyterをインストールしてください。

 

jupyterの起動

インストールが終わったらコマンドライン

jupyter notebook

と打ち込んでください。

 

ブラウザが立ち上がり jupyter notebookが立ち上がります。

 

Python3ノートブックの作成

右上にある、NEW▼をクリックし、Python3を選択してください

f:id:ysky24:20200305205929p:plain

新規にノートブックが作成され、コードが入力できるようになります。

 

ためしにprint文でテストしてみます。

一番上のセルに実行したいコードを入力しRunボタンをクリックします。

f:id:ysky24:20200305210555p:plain



 実行結果はセルの下に表示されます。

 

現在、Codeとなっている箇所をMarkdownに変更してみます。

f:id:ysky24:20200305210645p:plain

 

Markdownで記載し、Runをクリックします。

f:id:ysky24:20200305210658p:plain

 

f:id:ysky24:20200305210730p:plain

 

Markdownが実行されました。

 

このように、コードを分割して実行しコードの説明をより具体的に書くことが出来ます

jupyterをより使いやすくするために

jupyterには拡張機能であるnbextentionsというライブラリがあります。

 

jupyter nbextentionsのインストール

 Anacondaのjupyter拡張機能のインストールは一旦jupyterを終了させコマンドライン

conda install -y -c conda-forge jupyter_contrib_nbextensions

で、行います。

 

Nbextentionsというタブが増えているので

disible~のチェックを外すと使用可能となります。

この中でチェックしておくべきものを紹介します。

(気が向いたら紹介記事を書いてみようかな)

f:id:ysky24:20200305211823p:plain

 

おススメのjupyter拡張機能4選

Hinterland(入力補完)

入力中のコードの補完をしてくれます。候補を選びタブで選択することが出来ます。

シンプルに便利

f:id:ysky24:20200305212401p:plain

 

table of contents(2)

markdownで書いた見出しをもとに目次を自動生成します。

 

f:id:ysky24:20200305212908p:plain

 

 

f:id:ysky24:20200305212919p:plain

 

Live Markdown Preview (マークダウンのリアルタイム表示)

 記載中のMarkDownがリアルタイム表示されるようになります

f:id:ysky24:20200305213658p:plain

 

Codefolding (コードの折りたたみ)

IDEのように関数などを折りたたむことが出来るようになります

f:id:ysky24:20200305213905p:plain

 

 

まとめ

 

今回の記事ではJupyter Notebookの使い方について説明しました。

 

・コードの実行方法

Markdownの記載方法

・コードを分割し実行することが出来る

Markdown形式でより精細なコメントを書くことが出来る

・おススメのjupyter拡張機能

 

 について、簡単にまとめてみました。

 

実際のコードとともに手を動かすことが重要です。

 

無料の学習サイトではドットインストールhttps://dotinstall.com/ がおすすめです。

ある程度の条件式やループなど初級の内容が動画でまとめられており入門編としてはこれをやっておけば問題ありません。

 

初学習で終える自信がない方向けの最初の一冊は

Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ」がおすすめです。

 

2冊目は(あるいは学習意欲の高いかたは)Pythonの基礎知識が隅々まで解説されている「入門Python3」がおすすめです。

 

業務で自動化をしたい、など目標がふんわりとしている方には

「退屈なことはPythonにやらせよう」もおススメです。

こちらの本は自動化に集中した内容となっており、流し読みで自分のスキルを高めることができます。僕もだいぶお世話になりました(笑)

 

 

有料の動画講座に関して言えばUdemyさんがおすすめです。

 

こちらのサイトは初学がある程度すすんでいる方向けです。

 

有料だけに講座ごとのジャンルが豊富で学びたい講座を選択して選ぶことが出来ます。
PythonではAI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで10万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます。

 

 

にほんブログ村 投資ブログ 投資情報へ
にほんブログ村