şimdi ana2 fonkisyonu var. bu fonsiyonu ben 1 exe çalıştıracam ama 40 defa fonsikyonumun işleme geçmesini istiyorum bir kaç arkadaş threading ile yapabilirsin dediler ama beceremedim hata veriyor . bir deaf açılıp duruyor
şimdi ana2 fonkisyonu var. bu fonsiyonu ben 1 exe çalıştıracam ama 40 defa fonsikyonumun işleme geçmesini istiyorum bir kaç arkadaş threading ile yapabilirsin dediler ama beceremedim hata veriyor . bir deaf açılıp duruyor
Bunu “tek seferde sadece bir tane Firefox uygulamasınının açık bulunmasını istiyorum” şeklinde anlıyorum, doğru mu?
Bir işlemi art arda n defa yapmak için for _ in range(n): ... kullanıyoruz.
Buradan iletişime geçemeyeceğimiz kişilerden aldığınız önerileri uygulamaya çalışırken karşılaştığınız sorunları ilk önce o kişilere sormanız daha verimli olur düşüncesindeyim. Threading’i aynı anda birden fazla iş yapmak için kullanıyoruz, mesela aynı anda 40 tane ana2 fonksiyonu çalıştırmak için. Böyle bir amacınız var mı?
anlatılmak istenen kısaca şu = bir excel dosyası içerisinde bir sürü sayfa açmak gibi.
tkinter üzerinde bulunan botu başlat butonuna tıkladığımız zaman ana2 penceresi açılıyor ya. Eğer bir daha botu başlat dersek ana2 penceresi zaten açık olduğu için bir daha açmıyor. Bu yüzden tekrardan programın aynısını bir kere daha çalıştırmak zorunda kalıyoruz.
olması istenilen = programı bir kere çalıştırmak ve botu başlat butonuna her bastığımız da bir önceki açılan pencereden tamamen bağımsız çalışan yeni bir ana2 penceresi açmak
Bu pencerenin ana2 fonksiyonu içeresindeki pencere değişkeni olduğunu varsayıyorum.
“ana2 penceresinin zaten açık olması” diye bir şey yok, ana2 bir fonksiyon ve fonksiyonlar birden fazla defa çağırılabilir. Her çağırışımızda da kendilerine ait bir isim alanı (namespace) kullanırlar. ana2 birden fazla defa yeni bir thread olarak başlatılınca bir hata veriliyor, bu hatayı çözmeye çalıştınız mı? Eğer widgetleri global yapmazsanız bu hatayı almazsınız. Widgetleri global yapmaktaki amacınız neydi ki zaten?
Hatanın sebebi de tkinter widgetlerinin sadece oluşturuldukları thread içerisinden kontrol edilebilmeleri.
Şu kodu inceleyin o zaman, sorunu düzeltmenin yanında -link dosyasının bende olmaması ile falan alakalı- birkaç değişim yaptım onları düzeltebilirsiniz:
#-*-coding:utf-8-*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import WebDriverException as WDE
from selenium.common.exceptions import InvalidArgumentException
from selenium.webdriver.firefox.options import Options
from threading import Thread
from io import open
import time
import datetime
from datetime import date
import os
import sys
#reload(sys)
#sys.setdefaultencoding("utf-8")
from tkinter import *
import requests
from bs4 import BeautifulSoup
from random import choice
from random import randint
#def GetProxy():
#url = 'https://free-proxy-list.net/'
#r = requests.get(url)
#soup = BeautifulSoup(r.content,'html5lib')
#return choice(list(map(lambda x: x[0]+':'+x[1],list(zip(list(map(lambda x: x.text, soup.find_all('td')[::8])),(map(lambda x: x.text, soup.find_all('td')[1::8])))))))
def GetProxy():
url = 'https://free-proxy-list.net/'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
div = soup.find('div', class_='table-responsive')
tbody = div.find("tbody")
proxies = tbody.find_all("tr")
proxy = proxies[randint(0, len(proxies)-1)]
proxy_ip = proxy.find_all("td")[0].get_text()
proxy_port = proxy.find_all("td")[1].get_text()
return proxy_ip + ":" + proxy_port
def ana2(tekrars,linkds):
while True:
pencere = Tk()
pencere.title("BCVC BOT")
l = Label(pencere)
l.config(text=u"Deneme Sayısı : ")
l.grid(row=0,column=0)
## global l1
l1 = Label(pencere)
l1.config(text=u"")
l1.grid(row=0,column=1)
l = Label(pencere)
l.config(text=u"Denen Link Adresi : ")
l.grid(row=1,column=0)
## global l2
l2 = Label(pencere)
l2.config(text=u"")
l2.grid(row=1,column=1)
l = Label(pencere)
l.config(text=u"Link Başı Denen Proxy Adedi : ")
l.grid(row=2,column=0)
## global l3
l3 = Label(pencere)
l3.config(text=u"")
l3.grid(row=2,column=1)
l = Label(pencere)
l.config(text=u"Şuan Denen Proxy Adresi : ")
l.grid(row=3,column=0)
## global l4
l4 = Label(pencere)
l4.config(text=u"")
l4.grid(row=3,column=1)
l = Label(pencere)
l.config(text=u"Sonuç : ")
l.grid(row=4,column=0)
## global sonuc
sonuc = Label(pencere)
sonuc.config(text=u"")
sonuc.grid(row=4,column=1)
tekrar = int(tekrars)
for tekrars1 in range(tekrar):
links = linkds
## filehandle = open('%s.txt' % links, 'r')
link = [current_place.rstrip() for current_place in ["www.google.com", "forum.yazbel.com"]]
url = link[randint(0, 1)]
l1.config(text=u"" + str(tekrars1))
pencere.update()
for i in range(1,500):
proxy = GetProxy()
l3.config(text=u"" + str(i))
pencere.update()
firefox_capabilities = webdriver.DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['proxy'] = {
"proxyType": "MANUAL",
"httpProxy": proxy,
"sslProxy": proxy
}
options = Options()
options.headless = True
pencere.mainloop()
driver = webdriver.Firefox(capabilities=firefox_capabilities,options=options)
try:
l4.config(text=u"" + proxy)
l2.config(text=u"" + url)
pencere.update()
driver.get("%s" % url)
button = driver.find_element_by_xpath('//*[@id="getLink"]')
time.sleep(7)
button.click()
driver.quit()
sonuc.config(text=u"" + proxy + " : ~~ BAŞARILI OLDU! ~~")
pencere.update()
except:
driver.quit()
sonuc.config(text=u"" + proxy + " : ~~ BAŞARISIZ OLDU! ~~")
pencere.update()
continue
pencere.mainloop()
def threadingana():
global tekrar
global linkd
tekrars = tekrar.get()
linkds = linkd.get()
for i in range(2):
thread = Thread(target = ana2, args = (tekrars,linkds))
thread.start()
def ana():
pencere = Tk()
pencere.title("BCVC BOT")
l = Label(pencere)
l.config(text=u"Kaç Defa Proxy Denesin : ")
l.grid(row=0,column=0)
global tekrar
tekrar = Entry(pencere)
tekrar.grid(row=0,column=1)
l = Label(pencere)
l.config(text=u"Denenecek Linklerin Dosyasını Yazınız : ")
l.grid(row=1,column=0)
global linkd
linkd = Entry(pencere)
linkd.grid(row=1,column=1)
b1 =Button(pencere,text=u"BOTU BAŞLAT",command=threadingana)
b1.grid(row=2,column=1)
pencere.mainloop()
ana()