Baseと言うサイトでpythonを使って画像を自動アップロードするシステムを作っています。
CSVファイル(https://docs.google.com/spreadsheets/d/e/2PACX-1vSJmH8sah7B7LjlKSh7zOA9cUdDs73xpgxDqz_lPgrkp8w6sgp-a17HyGd0k72Zg_bPQmErURMLn9yc/pub?output=csv)から画像のファイル名を取得し、1枚づつアップロードするようにしたいのですが、1枚⇨2枚⇨3枚⇨4枚・・・と勝手に増えて投稿されてしまいます。
該当のソースコード
from selenium import webdriver import chromedriver_binary import time import random import csv # csvファイルを開いて、必要なセルの情報を取得 with open('/Users/yudai/Desktop/itemdata_20200217034307791/itemdata_20200217034307791.csv', 'r', encoding='shift_jis') as f: render = csv.reader(f) l = [row for row in render] print(l[1][0].split('-')[0]) def login(): # ログインページ開く driver.get('https://admin.thebase.in/shop_admin/items/add') # メアドと、パスワードを入力 driver.find_element_by_id('loginUserMailAddress').send_keys('【ID入れています】') time.sleep(1) driver.find_element_by_id('UserPassword').send_keys('【パスワード入れています】') time.sleep(1) # ログインボタンを押す driver.find_element_by_class_name('tabbox__btn').click() time.sleep(random.randint(2, 3)) time.sleep(1) def item(): # 商品名 driver.find_element_by_id('itemDetail_name').send_keys('商品名') time.sleep(0.4) # 商品詳細 driver.find_element_by_id('itemDetail_detail').send_keys(l[1][6].replace("<br>", "\n") + "\n" + l[1][7].replace("<br>", "\n")) time.sleep(0.4) # 値段 driver.find_element_by_id('itemDetail_price').send_keys(int(l[1][15]) + 1100) time.sleep(0.4) # 画像アップロードループ def item_image(): IMG_LIST = [] IMAGE_COL_NUM = 21 NUM = 2 driver.find_element_by_class_name('m-uploadBox__input').send_keys('/Users/yudai/Desktop/itemdata_20200217034307791/image/333957/77TZJ-001/' + l[1][IMAGE_COL_NUM - 1]) time.sleep(2) while IMAGE_COL_NUM <= 29: if len(l[1][IMAGE_COL_NUM]) == 0: time.sleep(2) break else: print(l[1][IMAGE_COL_NUM]) IMG_LIST.append(l[1][IMAGE_COL_NUM]) IMAGE_COL_NUM += 1 print(IMG_LIST) for IMG in IMG_LIST: print(IMG) driver.find_element_by_class_name('fileInput_18uZvZi5').send_keys('/Users/yudai/Desktop/itemdata_20200217034307791/image/333957/77TZJ-001/' + IMG) NUM += 1 time.sleep(6) def item_stock(): # 在庫と種類ループ ITEM_NUM = int(len(l)) ITEM_TYPE_NUM = int(len(l)) - 1 ITEM_STOCK_NUM = 0 while ITEM_NUM > 2: driver.find_element_by_class_name('c-defaultBtn').click() ITEM_NUM -= 1 time.sleep(0.2) while ITEM_TYPE_NUM > 0: driver.find_element_by_name('variationText' + str(ITEM_STOCK_NUM)).send_keys(l[ITEM_TYPE_NUM][10]) time.sleep(0.3) driver.find_element_by_name('variationStock' + str(ITEM_STOCK_NUM)).send_keys('3') ITEM_NUM -= 1 ITEM_TYPE_NUM -= 1 ITEM_STOCK_NUM += 1 time.sleep(0.2) if __name__ == '__main__': driver = webdriver.Chrome(executable_path='chromedriver') time.sleep(0.2) login() time.sleep(0.2) # item() time.sleep(0.2) item_image() time.sleep(0.2) # item_stock()
試したこと
time.sleep()をつけて時間をおいて試してみましたができませんでした。
postリクエストがずっとたまり続けてるのかなと思っていますが、解決策がわかりません。。
よろしくお願いいたします。