#1. 目的
SeleniumによるWebスレイピングの環境を作る。
#2.作業
##2-1 Jupyterのインストール
jyupterのインストール手順はこちら。
インストールが完了すれば、jupyterを立ち上げる。
pi@raspberrypi:~ $ jupyter notebook //jupyterを立ち上げる。
##2-2 SeleniumとChromiumドライバのインストール
pi@raspberrypi:~ $ sudo pip install selenium==4.0.0
pi@raspberrypi:~ $ sudo apt-get install chromium-chromedriver #chromium-chromedriverのインストールを実施する。
pi@raspberrypi:~ $ chromedriver --version #正しくインストールできたか確認
ChromeDriver 78.0.3904.108 (4b26898a39ee037623a72fcfb77279fce0e7d648-refs/branch-heads/3904@{#889})
##2-3 ブラウザを立ち上げてみる
import sys
sys.path.append('/home/pi/.local/lib/python3.5/site-packages/')
from selenium import webdriver
browser = webdriver.Chrome(executable_path="/usr/lib/chromium-browser/chromedriver")
browser.get('https://www.yahoo.co.jp')
##3-1 コンソールレベルでWebスクレイピングを実施する
必要なパッケージのインストールを行う。
# apt update && apt upgrade -y
# apt install chromium-browser
# apt install chromium-chromedriver
# apt install python3-selenium
##3-2 確認テスト
下記のコードを走らせてみる
comdata.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import io
import sys
#'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)エラー対策実施
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
#chromedriverの設定
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1024,768')
options.add_argument('--disable-dev-shm-usage')
CODE=str(2152)
browser = webdriver.Chrome(options=options,executable_path="/usr/bin/chromedriver") # Chromeを準備(optionでブラウザ立ち上げ停止にしている)
URL='https://kabutan.jp/stock/?code= '+ CODE
browser.get(URL) #株探サイトを開く。ブラウザ自体は立ち上げない
tmp = browser.find_element_by_class_name('company_block')
company_name=tmp.find_element_by_tag_name('h3')
xpath='//*[@id="kobetsu_right"]/div[4]/table/tbody'
xpath1='//*[@id="kobetsu_right"]/div[3]/table/tbody/tr[3]'
company_eps=browser.find_element_by_xpath(xpath1 + '/td[4]') #EPS
company_haitoub=browser.find_element_by_xpath(xpath1 + '/td[5]') #配当
company_gaiyo=browser.find_element_by_xpath(xpath + '/tr[3]/td') #会社概要
company_url=browser.find_element_by_xpath(xpath + '/tr[2]/td') #会社URL
print(company_eps.text)
print(company_haitoub.text)
print(company_name.text)
print(company_gaiyo.text)
print(company_url.text)
browser.close() #これがないと実行するたびにchromedriverのプロセスが蓄積しメモリを圧迫する。
実行結果
root@2a1627805ea9:/home/stock# python3 comdata.py
71.5
14.0
幼児活動研究会
幼稚園・保育園で幼児体育指導。独自教育プログラムを普及へ。園経営コンサルも。
http://www.youji.co.jp/
(注)
動かすコードにdriver.close()を書き忘れると、タスクマネージャーchromedriver.exeが
蓄積されることになる。この場合、killallでプロセスchromedriverを削除する。
root@2a1627805ea9:/home/stock# killall chromedriver
killallはインストールが必要
##killallをインストールする
root@2a1627805ea9:/home/stock# apt-get install psmisc
rootのchoromium-browserのプロセスがたまっている場合は下記コマンドで消去する
ps #プロセスを表示する
pgrep chromium-browse | xargs kill -9 #chromium-browserのプロセスを一括削除する