質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

902閲覧

Python実行から指定のリンクに飛ばない

sir

総合スコア0

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/09 07:41

編集2021/11/09 07:44

前提・実現したいこと

PythonでInstagramの自動いいねのシステムを作成しています.
tkinterでGUIに自動いいねのコードを紐づけようとしています.

発生している問題・エラーメッセージ

コード自体にエラーは出ないのですが,実行するとInstagramのホームページが開かず「data:,」と記載されたリンクのページが出てきてしまいます.

該当のソースコード

from selenium import webdriver from selenium.common.exceptions import WebDriverException from selenium.webdriver.common.action_chains import ActionChains import time import datetime import tkinter import instagram_nice import chromedriver_binary #Startを押した時の動作 def start(): # いいねの動きに対するパラメータ #ログインIDの指定 if loginId_txt.get() != '': username = loginId_txt.get() else: print('Login IDが入力されていません。') return #パスワードの指定 if password_txt.get() != '': password = password_txt.get() else: print('Passwordが入力されていません。') return #最大いいね回数の指定 if niceMax_txt.get() != '': nice_max = int(niceMax_txt.get()) else: niceMax_txt.insert(tkinter.END,"900") nice_max = int(niceMax_txt.get()) #いいね間隔の指定 if interval_txt.get() != '': interval = int(interval_txt.get()) else: interval_txt.insert(tkinter.END,"40") interval = int(interval_txt.get()) # 時刻の指定 if hourS_txt.get() != '': s_hour = int(hourS_txt.get()) else: hourS_txt.insert(tkinter.END,"7") s_hour = int(hourS_txt.get()) if hourE_txt.get() != '': e_hour = int(hourE_txt.get()) else: hourE_txt.insert(tkinter.END,"22") e_hour = int(hourE_txt.get()) # ハッシュタグの登録 taglist = [] for tn in range(TAG_NUM): if tag_txt[tn].get() != '': taglist.append(tag_txt[tn].get()) if len(taglist) == 0: print('ハッシュタグが入力されていません。') return print('ユーザーネーム:%s' % username) print('パスワード:%s' % password) print('最大いいね回数:%d回' % nice_max) print('いいね間隔:%d秒' % interval) print('稼働時間帯:%d時~%d時' % (s_hour, e_hour)) print(taglist) # いいねの回数(いいね最大回数をタグ数に平等に分ける) nice_num = int(nice_max / len(taglist)) # Chrome Driverを起動 driver = webdriver.Chrome() time.sleep(1) # ログイン instagram_nice.login(username, password, driver) # 現在の時刻を取得 now = datetime.datetime.now() # いいねループ処理 while 1: # いいね可能時間ならば自動いいね実行 if instagram_nice.time_comp(now, s_hour, e_hour) == 1: # ハッシュタグを切り替えながらいいねを押す動作を繰り返す for tag in taglist: # ハッシュタグで検索 instagram_nice.tagsearch(tag, driver) # いいね instagram_nice.pushnice(nice_num, interval, driver) print("いいね完了!") break # いいね可能時間外ならば何もしない else: print("時間外です。") time.sleep(1800) # tkinterメイン if __name__ == '__main__': #windowの設定 root = tkinter.Tk() # tkinterの読み込み root.title('Instabot') # アプリケーションのタイトル root.geometry('450x370') # ウィンドウのサイズ #tkinter設定 FORM_X = 20 FORM_Y = 20 PARAM_X = 20 PARAM_Y = 100 START_X = 20 START_Y = 300 TAG_X = 260 TAG_Y = 20 #ログインフォーム loginId_lbl = tkinter.Label(text='Login Id') loginId_lbl.place(x=FORM_X, y=FORM_Y) loginId_txt = tkinter.Entry(width=10) loginId_txt.place(x=FORM_X+100, y=FORM_Y) password_lbl = tkinter.Label(text='Password') password_lbl.place(x=FORM_X, y=FORM_Y+30) password_txt = tkinter.Entry(width=10) password_txt.place(x=FORM_X+100, y=FORM_Y+30) #パラメータ項目 niceMax_lbl = tkinter.Label(text='最大いいね回数') niceMax_lbl.place(x=PARAM_X, y=PARAM_Y) niceMax_txt = tkinter.Entry(width=10) niceMax_txt.place(x=PARAM_X+100, y=PARAM_Y) niceMaxU_lbl = tkinter.Label(text='回') niceMaxU_lbl.place(x=PARAM_X+200, y=PARAM_Y+5) interval_lbl = tkinter.Label(text='いいね間隔') interval_lbl.place(x=PARAM_X, y=PARAM_Y+30) interval_txt = tkinter.Entry(width=10) interval_txt.place(x=PARAM_X+100, y=PARAM_Y+30) intervalU_lbl = tkinter.Label(text='秒') intervalU_lbl.place(x=PARAM_X+200, y=PARAM_Y+35) hourS_lbl = tkinter.Label(text='稼働時間(始)') hourS_lbl.place(x=PARAM_X, y=PARAM_Y+90) hourS_txt = tkinter.Entry(width=10) hourS_txt.place(x=PARAM_X+100, y=PARAM_Y+90) hourSU_lbl = tkinter.Label(text='時') hourSU_lbl.place(x=PARAM_X+200, y=PARAM_Y+95) hourE_lbl = tkinter.Label(text='稼働時間(終)') hourE_lbl.place(x=PARAM_X, y=PARAM_Y+120) hourE_txt = tkinter.Entry(width=10) hourE_txt.place(x=PARAM_X+100, y=PARAM_Y+120) hourEU_lbl = tkinter.Label(text='時') hourEU_lbl.place(x=PARAM_X+200, y=PARAM_Y+125) #ハッシュタグ hashTag_lbl = tkinter.Label(text='ハッシュタグ') hashTag_lbl.place(x=TAG_X, y=TAG_Y) TAG_NUM = 10 # ハッシュタグの数 tag_txt = [] for tn in range(TAG_NUM): tag_txt.append(tkinter.Entry(width=15)) tag_txt[tn].place(x=TAG_X+10, y=TAG_Y+30*(tn+1)) #ボタンの生成 start_btn = tkinter.Button(root, text='Start', command=start) start_btn.place(x=START_X, y=START_Y) # メインループ root.mainloop()
from selenium import webdriver from selenium.common.exceptions import WebDriverException from selenium.webdriver.common.action_chains import ActionChains import time import random import chromedriver_binary import datetime def login(username, password, driver): driver.get('https://www.instagram.com/accounts/login/?source=auth_switcher') time.sleep(1) ### 追加箇所 Start ### # メアドとパスワードを入力 driver.find_element_by_name('username').send_keys('自分のID') time.sleep(1) driver.find_element_by_name('password').send_keys('自分のパスワード') time.sleep(1) # ログインボタンを押す driver.find_element_by_class_name('L3NKy').click() time.sleep(1) ### 追加箇所 End ### def tagsearch(tag, driver): # tagで渡ってきたハッシュタグのページにアクセス tagurl = 'https://www.instagram.com/explore/tags/' driver.get(tagurl + tag) time.sleep(1) def time_comp(now, s_hour, e_hour): # いいね可能時間かどうかを判定する if now.hour > s_hour and now.hour <e_hour: return 1 else: return 0 def nice(interval, driver): # いいね実行 time.sleep(random.randint(int(interval*0.9),int(interval*1.1))) driver.find_element_by_class_name('fr66n').click() time.sleep(1) def pushnice(nice_num, interval, driver): # いいねの回数といいねの間隔を引数で指定 # 最新の投稿が見える位置まで移動 target = driver.find_elements_by_class_name('_9AhH0')[10] actions = ActionChains(driver) actions.move_to_element(target) actions.perform() time.sleep(1) # 最新の投稿の1枚目をクリックしていいねを実行 driver.find_elements_by_class_name('_9AhH0')[9].click() time.sleep(1) nice(interval, driver) # 指定回数繰り返し for nn in range(nice_num-1): # ループ中のエラー対策 MAX_RETRY = 10 # エラーリトライ上限 for retry_n in range(MAX_RETRY): # エラー発生時MAX_RETRY回リトライする try: # 次の投稿へ移動 driver.find_element_by_class_name('coreSpriteRightPaginationArrow').click() time.sleep(1) # いいねを押す nice(interval, driver) # エラー時にはリトライ except: print("Error! retry={retry_n}/{MAX_RETRY}".format(retry_n, MAX_RETRY)) time.sleep(5) # エラーなし else: break if __name__ == '__main__': # いいねの動きに対するパラメータ s_hour = 8 # いいね可能開始時間[時] e_hour = 19 # いいね可能終了時間[時] nice_max = 900 # いいね最大回数[回] interval = 40 # いいねの間隔[秒] flag_max = 0 # いいねが最大回数されているかのフラグ # いいねの動きに対するパラメータ username = '自分のID' password = '自分のパスワード' # 検索するハッシュタグを指定する。 taglist = ['camera', 'wine', 'beautiful'] # いいねの回数(いいね最大回数をタグ数に平等に分ける) nice_num = int(nice_max / len(taglist)) # Chrome Driverを起動 driver = webdriver.Chrome() time.sleep(1) # ログイン login(username, password, driver) # 現在の時刻を取得 now = datetime.datetime.now() # いいねループ処理 while 1: # いいね可能時間ならば自動いいね実行 if time_comp(now, s_hour, e_hour) == 1: # ハッシュタグを切り替えながらいいねを押す動作を繰り返す for tag in taglist: # ハッシュタグで検索 tagsearch(tag, driver) # いいね pushnice(nice_num, interval, driver) print("いいね完了!") break # いいね可能時間外ならば何もしない else: print("時間外です。") time.sleep(1800)

試したこと

GUIに紐付けていない自動いいねのコードは問題なく実行できました.

補足情報(FW/ツールのバージョンなど)

Python 3.8.9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問