LoginSignup
2
2

More than 1 year has passed since last update.

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

Last updated at Posted at 2020-02-01

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

chromiumのインストール方法はこちら

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')

browser.getで指定したページが立ち上がる。
1.JPG

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のプロセスを一括削除する

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2