Python - Hatayı İfade Edemiyorum İçeri Girin Lütfen

sorunumuz şu her seferinde mesela 40 tane exe değilde 1 exe çalıştırıp 40 tane pençere açmasını istiyoruz

başkan bir sorum daha olacak mesela tablonun 4. bölümünde elit ve anonymous yazıyor elit olanları nasıl çektirebiliriz?

proxy_country = proxy.find_all("td")[3].get_text()

Yazan yerin altına şunu ekle:

proxy_anonymity = proxy.find_all("td")[4].get_text()

selamlar ibrahim bey

https://paste.ubuntu.com/p/mWHzntkGkN/

kodlarım linkte yanlız 5 tane açacağına 1 tane açıyor ve duruyor aynı anda 5 tane açması için nasıl bir threading uygulayabiliriz

Threadingin ne olduğu ve threading modülü ile ilgili bir araştırma yapmakla başlayabilirsiniz.

Tek tarayıcıda birden fazla tab açmak için buraya bakabilirsiniz:

pencere dediğim şöyle kodları incelemediğinizi düşünüyorum öncelikle ana2 yi bir exeyi çalıştırına ana2 fonksiyonunu 40 defa çalıştırsın istiyorum

Siz tek tarayıcıda 40 tane pencere açmak istemiyor musunuz? Attığım link bunla alakalı.

sorumu anlatamadım main 2 fonksiyonunu manin fonsiyonda çekiyorum ama görüyorum ki kodlarımı daha incelememişsiniz

Kodlarınızı inceledim ama hala sorunun ne olduğunu tam olarak anlayamadım, basit bir şekilde ve noktalama işaretlerini kullanarak anlatabilir misiniz?

1 Beğeni

ş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

Tamam onu gördüm.

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ı?

Deaf açılması ne demek bilmiyorum.

2 Beğeni

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

2 Beğeni

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.

1 Beğeni

nasıl yani örnek olarak gösterebilir misiniz?

Neyin örneği? Verdiğiniz kod üzerinden ise onu yapmak zor değil, ana2 fonksiyonundaki bütün global'leri silin.

Niye global kullandığınızı sormuştum bu arada.

golballerini siliyorum bu sefer bulamıyor anlamadım ben bu işş

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

deniyeceğim şimdi efendim

kırmızı yazılar ve hatalar çıktı bir tur çalıştı iyi güzel ikinci turda açılma yani bir sefere mahsuz 40 tane açtı