はじめに
目的は、プルダウン選択の操作が必要なWebページのスクレイピングです。
スクレイピング後、CSVデータファイルに保存するところまでを行います。準備すること
GoogleのブラウザのバージョンとChrome用WebDriverを一致させてダウンロードしておくこと
スクリプト
qiita.py
# seleniumの必要なライブラリをインポート
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep
from selenium.webdriver.chrome.options import Options
import pandas as pd
# ヘッドレスモードで処理を行う
options = Options()
options.add_argument('--headless')
# WebDriverのインスタンスを生成
browser = webdriver.Chrome(options=options)
# ページを開く
url = 'あなたのスクレイピングしたいWebサイトのURL'
browser.get(url)
sleep(5)
# 「種類」プルダウンから「車」を選択する関数
def select_type():
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_type'))
# オプションを選択
elem.select_by_visible_text('車')
# 一定時間待つ
sleep(3)
# 「--メーカー--」プルダウンから選択肢をリストで取得する関数
def get_shop_list():
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size01'))
# 選択項目の一覧をリストで取得
options = elem.options
# 選択項目のテキストをリストに格納
shop_list = [option.text for option in options][1:]
return shop_list
# 「--メーカー--」プルダウンから「--メーカー名--」を選択する関数
def select_shop(shop):
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size01'))
# オプションを選択
elem.select_by_visible_text(shop)
# 一定時間待つ
sleep(3)
# 「サイズ」プルダウンから選択肢をリスト取得する関数
def get_size_list():
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size02'))
# 選択項目の一覧をリストで取得
options = elem.options
# 選択項目のテキストをリストに格納
size_list = [option.text for option in options][1:]
return size_list
# 「サイズ」プルダウンから「サイズ」を選択する関数
def select_size(size):
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size02'))
# オプションを選択
elem.select_by_visible_text(size)
# 一定時間待つ
sleep(3)
# 「型番」プルダウンから選択肢をリスト取得する関数
def get_prod_list():
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size03'))
# 選択項目の一覧をリストで取得
options = elem.options
# 選択項目のテキストをリストに格納
prod_list = [option.text for option in options][1:]
return prod_list
# 「型番」プルダウンから「型番」を選択する関数
def select_prod(prod):
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size03'))
# オプションを選択
elem.select_by_visible_text(prod)
# 一定時間待つ
sleep(3)
# 「種類」プルダウンから「車」を選択する関数を呼び出す
select_type()
# 「--メーカー--」プルダウンから選択肢をリスト取得する関数を呼び出す
shops_list = get_shop_list()
ALL_PROD_LIST = []
for shlist in shops_list:
select_shop(shlist)
size_list = get_size_list()
for slist in size_list:
select_size(slist)
sleep(1)
prod_list = get_prod_list()
for plist in prod_list:
ALL_PROD_LIST.append(plist)
df = pd.DataFrame()
df['各社型番'] = ALL_PROD_LIST
df.to_csv('各社型番.csv',index=False)
browser.quit()
qiita.py
# seleniumの必要なライブラリをインポート
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep
from selenium.webdriver.chrome.options import Options
import pandas as pd
# ヘッドレスモードで処理を行う
options = Options()
options.add_argument('--headless')
# WebDriverのインスタンスを生成
browser = webdriver.Chrome(options=options)
# ページを開く
url = 'あなたのスクレイピングしたいWebサイトのURL'
browser.get(url)
sleep(5)
# 「種類」プルダウンから「車」を選択する関数
def select_type():
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_type'))
# オプションを選択
elem.select_by_visible_text('車')
# 一定時間待つ
sleep(3)
# 「--メーカー--」プルダウンから選択肢をリストで取得する関数
def get_shop_list():
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size01'))
# 選択項目の一覧をリストで取得
options = elem.options
# 選択項目のテキストをリストに格納
shop_list = [option.text for option in options][1:]
return shop_list
# 「--メーカー--」プルダウンから「--メーカー名--」を選択する関数
def select_shop(shop):
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size01'))
# オプションを選択
elem.select_by_visible_text(shop)
# 一定時間待つ
sleep(3)
# 「サイズ」プルダウンから選択肢をリスト取得する関数
def get_size_list():
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size02'))
# 選択項目の一覧をリストで取得
options = elem.options
# 選択項目のテキストをリストに格納
size_list = [option.text for option in options][1:]
return size_list
# 「サイズ」プルダウンから「サイズ」を選択する関数
def select_size(size):
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size02'))
# オプションを選択
elem.select_by_visible_text(size)
# 一定時間待つ
sleep(3)
# 「型番」プルダウンから選択肢をリスト取得する関数
def get_prod_list():
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size03'))
# 選択項目の一覧をリストで取得
options = elem.options
# 選択項目のテキストをリストに格納
prod_list = [option.text for option in options][1:]
return prod_list
# 「型番」プルダウンから「型番」を選択する関数
def select_prod(prod):
# Selectオブジェクトを生成
elem = Select(browser.find_element(By.ID, 'header_size03'))
# オプションを選択
elem.select_by_visible_text(prod)
# 一定時間待つ
sleep(3)
# 「種類」プルダウンから「車」を選択する関数を呼び出す
select_type()
# 「--メーカー--」プルダウンから選択肢をリスト取得する関数を呼び出す
shops_list = get_shop_list()
ALL_PROD_LIST = []
for shlist in shops_list:
select_shop(shlist)
size_list = get_size_list()
for slist in size_list:
select_size(slist)
sleep(1)
prod_list = get_prod_list()
for plist in prod_list:
ALL_PROD_LIST.append(plist)
df = pd.DataFrame()
df['各社型番'] = ALL_PROD_LIST
df.to_csv('各社型番.csv',index=False)
browser.quit()