研修の一環としてWebスクレイピングの学習を始めました。
今西 航平氏の「PythonによるWebスクレイピング〜入門編〜」を参考に学習したことを纏めていきます。今回は基礎知識・環境構築・自動ログインの処理までが完了しました。
Webスクレイピングの基礎知識
Webスクレイピング - クローリングによって公開されているサイトからテキスト・画像などのデータを習得し、利用できるよう整形・解析する
クローリング - webページのリンクをたどり、Webページの情報を収集する
Webスクレイピングは主に株価の変動・IR情報といったマーケティング戦略・AI/ MLなどのサービス開発に使われています。サービス開発に関しては第三者による無許可のスクレイピングを規制する運動が始まっているので要注意です。(ArtStationなど)
Webスクレイピングのメリット - 業務効率化、大量のデータを取得できる、APIが必要ない
Webスクレイピングのデメリット - アクセス拒否するサイトがある、HTML構造に左右される、**著作権・知的財産権の問題は慎重に
環境構築
まずWebアプリケーションのテストに使うライブラリである、Seleniumをインストールします。スクレイピングの学習にはSeleniumの他にもBeautifulSoup等が用いられます。
また、Chromeドライバーのexeファイルを入手する必要があります。詳しくはこちらから環境構築を行ってください。
pip install selenium==3.141.0
# Chrome
from selenium import webdriver
driver = webdriver.Chrome()
webdriverを実行すると、「Chromeは自動テストソフトウェアによって制御されています」と表示されたブラウザが立ち上がります。
自動ログイン
以下のサイトに自動でログインできるようにします。SeleniumにはWebアプリケーションのテスト用として、入力フォームに文字を入力する・ボタンを全自動で押すなどの作業が行えます。
自動でINPUTタグ等に文字列などを入力するには、まずそのページのHTMLの構造を理解する必要があります。HTMLの構造を確認するには、右クリック → 検証 → 要素を左クリック
でタグのID・クラスなどを確認できます。今回必要なのはユーザーネーム・パスワードのNPUTタグのIDなのですが、これらは"username" "password"
が該当します。
# Chrome
from selenium import webdriver
browser = webdriver.Chrome()
# URLにアクセスする
browser.get("https://scraping-for-beginner.herokuapp.com/login_page")
# ユーザーネームのインプットを取得
elem_username_input = browser.find_element_by_id("username")
#send_keysメソッドで自動入力ができる
elem_username_input.send_keys("imanishi")
# パスワードのインプットを取得
elem_username_input = browser.find_element_by_id("password")
# send_keysメソッドで自動入力
elem_username_input.send_keys("kohei")
# URLを閉じる
browser.quit()
今回はスクレイピングの基礎と自動ログインについて学びました。
次回はテキストデータ・画像データの収集について学ぶ予定です。