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)
<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)
~~長いので省略~~
要素を指定して取得する方法
要素を指定する方法は前回のseleniumの記事で解説しておりますので、ご確認ください。
seleniumとは seleniumとはWEBを操作するオートメーションツールでWEBのUIテストを行うために使用されるツールです。 元々はWEBにJavaScriptのコードを流し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)
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での検索結果などの取得も簡単に行えます。