はじめに
Faxのスパム分類シリーズでFaxをダウンロードする際に使用したのでこちらの記事では少し詳しく紹介していきます。
スクレイピングは用法に気を付けてしてください。
目次
- 環境構築
- コマンドの説明
環境構築
pythonとpipとChrome Canaryが既に入っている前提ですが以下のコマンドで環境構築が可能です。 ほかにもpipを使わずにchrome driverをインストールする方法もありますが、pipを使ったほうがpathを自身で通す必要がなく楽なのでおすすめです。
pip install selenium pip install chromedriver-binary
コマンドの説明
headlessモードで動かす場合はheadON modeのところをコメントアウトし、headless modeのところをコメント解除すれば良い
from selenium import webdriver import chromedriver_binary #---headON mode--------- driver = webdriver.Chrome() # #---headless mode----------------------------- # options = webdriver.ChromeOptions() # #---headlessで動かすために必要なオプション--- # options.add_argument("--headless") # options.add_argument("--disable-gpu") # options.add_argument("--window-size=1280x1696") # options.add_argument("--disable-application-cache") # options.add_argument("--disable-infobars") # options.add_argument("--no-sandbox") # options.add_argument("--hide-scrollbars") # options.add_argument("--enable-logging") # options.add_argument("--log-level=0") # options.add_argument("--single-process") # options.add_argument("--ignore-certificate-errors") # options.add_argument("--homedir=/tmp") # driver = webdriver.Chrome(options=options) # headless modeの場合ダウンロード先を明示しないとエラーになる # File download指定 download_path="./download" driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command') driver.execute("send_command", { 'cmd': 'Page.setDownloadBehavior', 'params': { 'behavior': 'allow', # ダウンロード先 'downloadPath': download_path } }) # Google検索画面にアクセス driver.get('https://www.google.co.jp/') # htmlからStringを探しsend_keysでStringを入力する phone_number = driver.find_element_by_name("String") phone_number.send_keys("String") # 探してきたボタンなどをクリックする driver.find_element_by_class_name("String").click() # htmlのPath(String)で探す driver.find_element_by_xpath("String") # htmlのPath(String)で探したあとにinnerText値取得 driver.find_element_by_xpath("String").text # get_attribute("value")を使うとvalue指定で取得できる driver.find_element_by_xpath("String").get_attribute("value") # 最後に必ず明記する もし明記せず実行を繰り返すとメモリーを大量に使われる driver.quit()
実際にgoogleにアクセスしました
こちらのコードは以下のとおりです。
from selenium import webdriver import chromedriver_binary import time #---headON mode--------- driver = webdriver.Chrome() # Google検索画面にアクセス driver.get('https://www.google.co.jp/') time.sleep(5) driver.quit()