Raspberry Pi4上でのWebスクレピング環境構築

#1. 目的

SeleniumによるWebスレイピングの環境を作る。


#2.作業
##2-1 Jupyterのインストール

jyupterのインストール手順は[こちら](https://qiita.com/iton/items/1bd670bc84f264024d5d)。
インストールが完了すれば、jupyterを立ち上げる。

```console
pi@raspberrypi:~ $ jupyter notebook  //jupyterを立ち上げる。
```
##2-2 SeleniumとChromiumドライバのインストール

```console
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})
```

[chromiumのインストール方法はこちら](https://www.hiroom2.com/2018/05/04/ubuntu-1804-chromium-ja/)



##2-3 ブラウザを立ち上げてみる
```python:
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')
```
browser.getで指定したページが立ち上がる。
![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/27fb9877-ae9e-765f-52ee-fc4f56874707.jpeg)


##3-1 コンソールレベルでWebスクレイピングを実施する

必要なパッケージのインストールを行う。

```console
# apt update && apt upgrade -y
# apt install chromium-browser
# apt install chromium-chromedriver
# apt install python3-selenium
```

##3-2 確認テスト
下記のコードを走らせてみる

```python: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のプロセスが蓄積しメモリを圧迫する。
```

実行結果

```console
root@2a1627805ea9:/home/stock# python3 comdata.py
71.5
14.0
幼児活動研究会
幼稚園・保育園で幼児体育指導。独自教育プログラムを普及へ。園経営コンサルも。
http://www.youji.co.jp/
```
(注)
動かすコードにdriver.close()を書き忘れると、タスクマネージャーchromedriver.exeが
蓄積されることになる。この場合、killallでプロセスchromedriverを削除する。

```console
root@2a1627805ea9:/home/stock# killall chromedriver
```

killallはインストールが必要

```console
##killallをインストールする
root@2a1627805ea9:/home/stock# apt-get install psmisc 
```

rootのchoromium-browserのプロセスがたまっている場合は下記コマンドで消去する

```console
ps  #プロセスを表示する
pgrep chromium-browse | xargs kill -9  #chromium-browserのプロセスを一括削除する

```