Python

Python Webスクレイピング003(Amazonの人気商品取得)

Seleniumを使用したwebスクレイピング 003

前回(002)からの追加機能

  • コマンドラインからの入力で一覧にない値が入力されるまで入力待ちをループさせるように変更

そろそろURL部分は設定ファイル等の外部ファイルに移さなくては。。。

from selenium import webdriver
import chromedriver_binary
import csv
import copy
import sys



search_list=''
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'


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()