#概要
ブラウザを立ち上げ→Qiitaのトップページに移動→検索ボックスにキーワードを入力→検索までの一連の作業をPython, Seleniumを用いて実行するコードを書きました。
このコードを発展させれば、ブラウザ立ち上げ→ログイン自動化→フィルター条件設定→データダウンロードといった一連の作業を自動化できます。
<環境>
OS:Windows
Code Editor:Visual Studio Code
python:3.9.2
#準備
##pythonのインストール
以下からOSにあったpythonをインストールする。
https://www.python.org/downloads/
VS codeのTerminalに以下を入力し、インストールの確認を行う。
py -m pip install selenium
py -V #バージョン確認
##seleniumのインストール
VS codeのTerminalに以下を入力し、インストールする。
py -m pip install selenium #pipでインストール
##ブラウザドライバーのダウンロード
###Google Chromeの場合
google chromeのバージョンを確認する。(右上のアイコン→ヘルプ→Google Chromeについて)
以下から、確認したChromeのバージョンにあったChrome Driverを選択。
OSにあったzipファイルをダウンロードし、解凍する。
https://chromedriver.chromium.org/downloads
###Microsoft Edge (New Edge)の場合
Google Chromeと同じため、画像は省略。
Microsoft Edgeのバージョンを確認する。(右上のアイコン→ヘルプとフィードバック→Microsoft Edgeについて)
以下から、確認したEdgeのバージョンにあったWebDriverを選択。
https://developer.microsoft.com/ja-jp/microsoft-edge/tools/webdriver/
OSにあったzipファイルをダウンロードし、解凍する。
#コード
F12でQiitaの検索ボックスのHTMLを確認すると、class名がst-RenewalHeader_searchInputであることがわかる。qiita.pyというファイルを作成し、以下のコードを記入。
# coding:utf-8
from selenium import webdriver
# Google Chromeを立ち上げ、Qiitaのトップページを開く。
driver = webdriver.Chrome(executable_path='chromedriver.exeのパス')
driver.get('https://qiita.com/')
# Microsoft Edgeを立ち上げ、Qiitaのトップページを開く。
driver = webdriver.Edge(executable_path='msedgedriver.exeのパス')
driver.get('https://qiita.com/')
# 検索ボックスを取得し、キーワードを入力後、検索
keyword_txb = driver.find_element_by_class_name('st-RenewalHeader_searchInput')
keyword_txb.send_keys('python selenium')
keyword_txb.submit()
コードを実行すると、ブラウザが立ち上がり、検索ボックスにキーワード(python selenium)が入力され、結果が表示される。
#つまづいた点
- pythonのバージョン確認
python -V #バージョンが表示されない。Python→pyで正しく表示。
Python
- seleniumのインストール
pip install selenium #エラーになる。py -mが必要
- ブラウザのバージョンとドライバのバージョンが異なる
ブラウザのバージョンと異なるバージョンのドライバをダウンロードした結果、起動した瞬間、ブラウザが閉じ、VS codeのターミナルにバージョンが異なる旨のエラーメッセージが表示される。
#最後に
クローリング、スクレイピングをする場合、著作権、サーバー側の負荷、利用規約に注意が必要。スクレイピングでダウンロードしたデータを第3者に提供した場合は、著作権法違法になる可能性がある。また、以下のサービスは、利用規約でスクレイピングが禁止されている。
- Amazon
- J-PlatPat 特許情報プラットフォーム