Seleniumを使用したwebスクレイピング 004
前回(003)からの追加機能
- 設定ファイルを作成する事で変動の可能性があるURLを外部ファイルへと分離させるよう変更
設定ファイルに関しては入力、読み込み共に他言語よりも簡潔にかけて使いやすかった印象。
[url] book_list = https://www.amazon.co.jp/gp/most-wished-for/books/ref=crw_ratp_mw_books game_list = https://www.amazon.co.jp/gp/most-wished-for/videogames/ref=crw_ratp_mw_videogames apparel_list = https://www.amazon.co.jp/gp/most-wished-for/apparel/ref=crw_ratp_mw_apparel hobby_list = https://www.amazon.co.jp/gp/most-wished-for/hobby/ref=crw_ratp_mw_hobby
from selenium import webdriver import chromedriver_binary import csv import copy import sys import configparser #モジュールのインポート search_list='' config = configparser.ConfigParser() #インスタンス生成 config.read('config.ini') #読み込む設定ファイル section1 = 'url'#セクションの指定 #指定したセクションから対象の値を取得 book_list = config.get(section1, 'book_list')① game_list = config.get(section1, 'game_list') apparel_list = config.get(section1, 'apparel_list') hobby_list = config.get(section1, 'hobby_list') def SearchList(): #コマンドラインからの入力取得 while 1: try: input_list = input("検索したい欲しいものリストの番号を入力してください。\n1:本\n2:ゲーム\n3:アパレル\n4:おもちゃ\n※終了の場合はCtr + C\n") if input_list is "1": search_list = book_list break elif input_list is "2": search_list = game_list break elif input_list is "3": search_list = apparel_list break elif input_list is "4": search_list = hobby_list break except KeyboardInterrupt: #Crt-Cが入力された場合 print("終了") sys.exit() driver = webdriver.Chrome() driver.get(search_list) contents = driver.find_elements_by_class_name('p13n-sc-truncated') #商品名称の取得 lists = [] #2次元配列用 try: for i in range(1,21): list = [] list.append(i) list.append(contents[i].text) lists.append(copy.copy(list)) #値渡しするためコピー作成 list.clear except: driver.quit() driver.quit() print(lists) try: f = open('output.csv', 'w') writer = csv.writer(f, lineterminator='\n') writer.writerows(lists) f.close() except: f.close() sys.exit() if __name__ == '__main__': SearchList()