seleniumでスクレイピングを行う方法を解説

seleniumでスクレイピングを行う方法を解説

seleniumとは

seleniumについての詳しい解説と基本的な操作方法は関連記事を見てください。

今回の記事はseleniumの使い方を前提知識としてスクレイピングを行う方法を解説しています。

→関連記事:seleniumの基本的な使い方

スクレイピングとは

スクレイピングって何?って方はまずコチラの記事を見てください。

→関連記事:スクレイピングの基礎知識【入門編】

上記の記事にも説明していますが、スクレイピングを行う前にスクレイピングを行うサイトの注意事項等は必ず確認いたしましょう。

Twitterはスクレイピングが禁止になっています。

また、この記事ではprint関数で出力して確認を行うコードを記載しますが、OpenPyXL等と組み合わせてスクレイピングの結果を保存する方法も記事後半でご紹介します。

OpenPyXLの詳しい使い方は関連記事をご確認ください。

→関連記事:OpenPyXLでEXCLEを操作する方法

seleniumを使ってタイトルを取得しよう

まず、seleniumを使ってタイトルを取得する方法を解説します。

今回はyahooのタイトルを取得します。

import time
from selenium import webdriver

d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')

d.get('https://www.yahoo.co.jp/')
time.sleep(2)
dt = d.title
print(dt)

タイトルの取得は「.title」のみで取得できます。

かなり楽勝ですね(^^♪

URLとソースコードを取得する

タイトルだけじゃなくサイトのURLとソースコードも楽々取得できます。

ソースコードを取得するとBeautifulSoupと併せて必要な情報を取得するのが容易になります。BeautifulSoupと併せるコードも併せて解説致します。

それではURLとソースコードを取得するコードを見てみましょう。

import time
from selenium import webdriver

d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')

d.get('https://www.yahoo.co.jp/')
time.sleep(1)
dc = d.current_url
dp = d.page_source
print(dc)
print(dp)
https://www.yahoo.co.jp/
<html lang=”ja”><head>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″>
<meta http-equiv=”content-style-type” content=”text/css”>
長いので省略

「.current_url」でURLを「d.page_source」でソースコードを取得しています。

お次はBeautifulSoupと併せてyahooのimgタグのみ抽出するコードを書きます。

import time
from selenium import webdriver
from bs4 import BeautifulSoup

d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')

d.get('https://www.yahoo.co.jp/')
time.sleep(1)
dp = d.page_source
soup = BeautifulSoup(dp,'html.parser')
img = soup.find_all("img")
for i in img:
    print(i)
<img alt=”Yahoo! JAPAN” height=”80″ src=”https://s.yimg.jp/images/top/sp2/cmn/logo_decoration-170322.png” width=”360″/>
~~長いので省略~~
これでyahoo内のimgタグをすべて抽出できました。

要素を指定して取得する方法

要素を指定する方法は前回のseleniumの記事で解説しておりますので、ご確認ください。

関連記事

seleniumとは seleniumとはWEBを操作するオートメーションツールでWEBのUIテストを行うために使用されるツールです。 元々はWEBにJavaScriptのコードを流しWEBを操作する仕組みでしたが、セキュリティの制限に引[…]

seleniumを使ってpythonでwebを操作する方法

今回は指定された要素を変数に収納し、情報を取得する方法を解説します。

今回はseleniumでgoogleの検索画面から「selenium」と検索して上位表示されている10サイトのタイトルを取得してみます。

この時タイトルは「.title」では取得できません。googleで上位10サイトを取得するには要素で取得します。今回はクラスを指定して取得します。

import time
from selenium import webdriver

d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')

d.get('https://www.google.com/')
time.sleep(1)
search_box = d.find_element_by_name("q")
search_box.send_keys('selenium')
search_box.submit()
h = d.find_elements_by_class_name('LC20lb')
for i in h:
    print(i.text)
WebのUIテスト自動化 – Seleniumを使ってみる – Qiita
Selenium – Qiita
【超便利】PythonとSeleniumでブラウザを自動操作する方法まとめ …
Webブラウザ自動化ツール「Selenium IDE」の今までとこれから …
Selenium – Web Browser Automation
ブラウザ上の操作を記録するだけ。Selenium IDEでUIテストを …
Seleniumとは – はてなキーワード – はてなダイアリー
オープンソースの自動テストツール / Seleniumとは
入門、Selenium – Seleniumの仕組み | CodeGrid
PythonとSeleniumを使ったブラウザ自動操作 – 名古屋のWeb …

これで「selenium」のキーワードで上位表示10サイトのタイトルが出力できました。

seleniumでスクレイピングした情報をexcelに保存する

最後にOpenPyXLを使用して、スクレイピングした情報をexcelに保存する方法を解説します。上記のコードを使いまわしますが、seleniumで上位表示されている10サイトのタイトルをexcelのA1~A10セルに保存するコードです。

最後の行のexcelへの保存が終了した事が分かりやすいようにプログラムの最後にドライバを終了するコードも追加しておきます。

import time
from selenium import webdriver
import openpyxl

wb = openpyxl.Workbook()
wa = wb.active
d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')
d.get('https://www.google.com/')
time.sleep(1)
search_box = d.find_element_by_name("q")
search_box.send_keys('selenium')
search_box.submit()
h = d.find_elements_by_class_name('LC20lb')
r = 0
for i in h:
    wa.cell(row=1+r, column=1, value=i.text)
    r = r + 1
wb.save(r'C:\Users\user\Desktop\sample.xlsx')
d.quit()

これでexcelに上位表示10サイトを保存するコードができました。

このようにseleniumを使用するとgoogleでの検索結果などの取得も簡単に行えます。

>プログラミング情報サイト「In-Output」

プログラミング情報サイト「In-Output」

当サイトではプログラミング言語の情報を発信しています。
HTMLやCSSのマークアップ言語の学習方法や解説、WordPressでのサイト開設方法、python等のプログラミング言語を使用して日頃の作業の効率化等、皆様のお役に立てるサイトを目指しています。

CTR IMG