Contents
Seleniumを使用したwebスクレイピング 002
前回(001)からの機能追加
- コマンドラインからの入力によってゲーム以外の人気商品を取得できるように変更
input処理部分はループで回す方がベター。。。
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():
#コマンドラインからの入力取得
input_list = input("検索したい欲しいものリストの番号を入力してください。\n1:本\n2:ゲーム\n3:アパレル\n4:おもちゃ\n※終了の場合はCtr + C\n")
try:
if input_list is "1":
search_list = book_list
elif input_list is "2":
search_list = game_list
elif input_list is "3":
search_list = apparel_list
elif input_list is "4":
search_list = hobby_list
else:
print("終了")
sys.exit()
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()

