LoginSignup
0
0

Seleniumを使ってスクレイピング

Posted at

はじめに

目的は、プルダウン選択の操作が必要な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()

0
0
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
0
0