【CentOS8】Python関連のパッケージを入れる(mysqlclient、Chrome、ChromeDriver、Selenium、Beautifulsoup)
はじめに
この記事では、CentOS8にmysqlclient、Chrome、ChromeDriver、Selenium、Beautifulsoupをインストールする方法をまとめました。
■この記事と直接関係ありませんが、作成したポートフォリオがこちらです↓
Nintendo Switch ダウンロードソフトデータベースβ
https://switch-dlsoft-db.com
Nintendo Switchのダウンロードソフトのセール情報を主にまとめたWebサイトになります。(何番煎じかわかりませんが…)
2020年6月頃から作り始めて、3ヶ月でここまでできました。
mysqlclientのインストール
まず、mysqlclient をビルドするのに必要なパッケージをインストールする。(rootで行った)
# yum install python3-devel mysql-devel
無事にインストールが終わると「Complete!」と表示される。
次に、mysqlclientをインストールする。
# pip3 install mysqlclient
gccが入ってないことが原因のようなので、gccを入れてから実行する。
# yum install gcc
# pip3 install mysqlclient
今度は無事にインストールできた。
テスト用のプログラムを以下に記す。
ここでは[list_app]データベースの[items]テーブルの内容を全件取得した。
パスワードやデータベース名、テーブル名は各自変える。
# MySQLのインポート
import MySQLdb
# データベースへの接続とカーソルの生成
connection = MySQLdb.connect(
host='localhost',
user='root',
passwd='<ここにパスワードを入れる>',
db='list_app',
# テーブル内部で日本語を扱うために追加
charset='utf8'
)
cursor = connection.cursor()
cursor.execute('select * from items')
for row in cursor:
print(row)
# 保存を実行
connection.commit()
# 接続を閉じる
connection.close()
chromeをインストール
デフォルトのyumリポジトリにはないので追加する。
$ sudo vi /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
$ sudo yum update
最新の安定版をインストールする。
$ sudo yum install google-chrome-stable
バージョンを確認する。
$ google-chrome --version
2020/7/8現在で、Linuxでは83.0.4103.116が最新の安定版のようだ。
ChromeDriverのインストール
インストールしたChromeのバージョンに合わせる。
マイナーバージョンの違いでも動かなくなることがあるので、なるべく近いバージョンを探す。
リリースの情報はここで確認可能。
バージョン一覧はここから探せる。
$ wget https://chromedriver.storage.googleapis.com/83.0.4103.39/chromedriver_linux64.zip
ダウンロードしたzipファイルを解凍するのにunzipを使う。
入っていない場合は入れておく。
$ sudo yum -y install unzip
zipファイル[chromedriver_linux64.zip]を解凍し、解凍してできた[chromedriver]を[/usr/local/bin/]に移動する。
その後[/usr/local/bin/chromedriver]のパーミッションを変更する。
zipファイルはもういらないので消去しておく。
$ unzip chromedriver_linux64.zip
$ sudo mv chromedriver /usr/local/bin/
$ sudo chmod 755 /usr/local/bin/chromedriver
$ rm chromedriver_linux64.zip
chromedriverのバージョンを確認しておく。
$ chromedriver --version
参考サイト
CentOS7×Chromeでスクレイピング環境を構築するチュートリアル - Qiita
Seleniumのインストール
rootでseleniumを導入する。
$ su -
# pip3 install selenium
テスト用プログラムを以下に記す。
Googleにアクセスし、タイトル(Google)を表示するプログラムである。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.google.co.jp/')
print(driver.title) #=> Google
#driver.save_screenshot('test.png')
参考サイト
CentOS7でSelenium+Pythonを動かすまで - Qiita
Beautifulsoupのインストール
ターミナル
$ su -
# pip3 install beautifulsoup4
$ su -
# pip3 install beautifulsoup4
テスト用プログラムを以下に記す。
"""
指定したURLの、JavaScript実行後のHTMLを取得し、ファイルに保存するプログラム
"""
# coding: UTF-8
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep
#URLを指定
url = "https://www.google.co.jp/"
#htmlを保存するパスを指定
path_w = './test.html'
# ブラウザのオプションを格納する変数をもらってきます
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# ブラウザを起動する
driver = webdriver.Chrome(options=options)
# ブラウザでアクセスする
driver.get(url)
sleep(5)
# HTMLの文字コードをUTF-8に変換してから取得します
html = driver.page_source.encode('utf-8')
# BeautifulSoupで扱えるようにパースします
soup = BeautifulSoup(html, "html.parser")
print(soup)
#バイナリデータに変換
b = str(soup).encode('utf-8', 'ignore')
with open(path_w, mode='wb') as f:
f.write(b)
#Webページを閉じる
driver.close()
#ブラウザを終了
driver.quit()
Author And Source
この問題について(【CentOS8】Python関連のパッケージを入れる(mysqlclient、Chrome、ChromeDriver、Selenium、Beautifulsoup)), 我々は、より多くの情報をここで見つけました https://qiita.com/niisan1ban/items/ed81313aaabf9a20c267著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .