Python Proxy'e Nasıl Bağlanabilirim?

Hocam Hata Verdi… Nasıl Çözebiliriz?

hata çıktısını verebilir misin

Traceback (most recent call last):
  File "C:/Users/ertug/PycharmProjects/Çoklu Hack Tooll/deneme1.py", line 5, in <module>
    options.set_headless(headless=True)
AttributeError: 'Options' object has no attribute 'set_headless'

modülleri içe aktardın değil mi ?

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.set_headless(headless=True)
driver = webdriver.Firefox(firefox_options=options, executable_path='geckodriver')#geckodriver firefox için netten indirebilirsin
driver.get("http://google.com/")
print ("Headless Firefox Başlatılıyor")
driver.quit()

Buyurun Hocam Kodlar.

options = Options()
yukardaki koddan sonra aşağıdaki kodları ekleyebilir misin?

options.binary_location = "firefox'un yolunu belirt:örneğin:/usr/bin/firefox"
options.add_argument("-headless")

Kodlar:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.binary_location ="C:\Program Files\Mozilla Firefox"
options.add_argument("-headless")
driver = webdriver.Firefox(firefox_options=options, executable_path='geckodriver')#geckodriver firefox için netten indirebilirsin
driver.get("http://google.com/")
print ("Headless Firefox Başlatılıyor")
driver.quit()
Traceback (most recent call last):
  File "C:/Users/ertug/PycharmProjects/Çoklu Hack Tooll/deneme1.py", line 7, in <module>
    driver = webdriver.Firefox(firefox_options=options, executable_path='geckodriver')#geckodriver firefox için netten indirebilirsin
  File "C:\Users\ertug\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium-2.53.6-py3.6.egg\selenium\webdriver\firefox\webdriver.py", line 55, in __init__
    self.binary = firefox_binary or capabilities.get("binary", FirefoxBinary())
  File "C:\Users\ertug\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium-2.53.6-py3.6.egg\selenium\webdriver\firefox\firefox_binary.py", line 50, in __init__
    "binary = FirefoxBinary('/path/to/binary')\ndriver = webdriver.Firefox(firefox_binary=binary)")
Exception: Failed to find firefox binary. You can set it by specifying the path to 'firefox_binary':
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('/path/to/binary')
driver = webdriver.Firefox(firefox_binary=binary)

Kodlar:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

options = Options()
binary=FirefoxBinary("C:\Program Files\Mozilla Firefox")
options.add_argument("-headless")
driver = webdriver.Firefox(firefox_options=options, executable_path='geckodriver',firefox_binary=binary)#geckodriver firefox için netten indirebilirsin
driver.get("http://google.com/")
print ("Headless Firefox Başlatılıyor")
driver.quit()
Traceback (most recent call last):
  File "C:/Users/ertug/PycharmProjects/Çoklu Hack Tooll/deneme1.py", line 9, in <module>
    driver = webdriver.Firefox(firefox_options=options, executable_path='geckodriver',firefox_binary=binary)#geckodriver firefox için netten indirebilirsin
  File "C:\Users\ertug\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium-2.53.6-py3.6.egg\selenium\webdriver\firefox\webdriver.py", line 80, in __init__
    self.binary, timeout)
  File "C:\Users\ertug\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium-2.53.6-py3.6.egg\selenium\webdriver\firefox\extension_connection.py", line 52, in __init__
    self.binary.launch_browser(self.profile, timeout=timeout)
  File "C:\Users\ertug\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium-2.53.6-py3.6.egg\selenium\webdriver\firefox\firefox_binary.py", line 67, in launch_browser
    self._start_from_profile_path(self.profile.path)
  File "C:\Users\ertug\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium-2.53.6-py3.6.egg\selenium\webdriver\firefox\firefox_binary.py", line 90, in _start_from_profile_path
    env=self._firefox_env)
  File "C:\Users\ertug\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "C:\Users\ertug\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py", line 997, in _execute_child
    startupinfo)
PermissionError: [WinError 5] Erişim engellendi

Böyle Bir Hata Verdi bu sefer…

options.binary_location =“C:\Program Files\Mozilla Firefox” bu satırdaki yol yanlış verilmiş, doğru olduğunu şöyle anlayabilirsin, çift tıkladığında firefox açılacak o dasyanın yolu ve adı olacak, mesela ubuntuda /usr/bin/firefox anlatımı şöyle bin klasörünün içine girdiğinde firefox çalıştırılabilir bir dosya bu firefox’a çift tıkladığım da firefox açılır işte sen de çalıştırılabilir dosyayının yolunu yazmalısın, sanırım klasörü belirtip bırakmışsın.

Valla Çalıştı :smiley: Ama Bu headless işe yaramadı sanırım :frowning: bildiğiniz normal browser açıldı bunu arkaplanda açması daha iyi… nasıl ayarlıcaz ki

headless olayı zaten arka planda çalışmak içindir, set olayı vardı ya o windows da neden işe yaramadı bilmiyorum normalde linux ve mac ortamlarında set_headless fonksiyonu çalışıyor, bu headless’ı options.add_argument fonksiyonuyla windowsda çalışıyor ama işe yaramadı görünen o ki, biraz araştırırım, headless modu için(mümkünse linux platformlarından birini de kullanabilirsin)

PhantomJS Kullansak Nasıl Olur?

o da olur tabi ama bütün olay options.set_headless(headless=True) bu satır neden windows da çalışmadı sorusunda yatıyor. :frowning:

:slight_smile: Bilemeyiz Artık…PhantomJS Çalıştı Yalnız…Bir Veri Çekme Örneği Deniyeyim Eğer Olursa Çok Teşekkür Ederim Hocam :slight_smile:

driver.get()
satırından sonra

html = driver.page_source
print(html)

satırlarını eklersen sayfa kaynağını alabilirsin ama selenium ile bir tarayıcıda neler yapabiliyorsan aynını yaparsın, bu modül çok büyük bir belgeye sahip zamanla öğrenirsin.

from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

options = Options()
binary=FirefoxBinary("C:\Program Files\Mozilla Firefox\\firefox.exe")
options.add_argument("--headless")
driver = webdriver.PhantomJS("C:\\Users\ertug\Desktop\phantomjs-2.1.1-windows\\bin\\phantomjs.exe")#geckodriver firefox için netten indirebilirsin
driver.get("https://www.google.com/")
print ("Headless Firefox Başlatılıyor")
deneme=driver.find_element_by_xpath("//*[@id='lst-ib']")
deneme.send_keys("deneme")
bas=driver.find_element_by_xpath("//*[@id='tsf']/div[2]/div[3]/center/input[1]")
bas.click()
soup=BeautifulSoup(driver.page_source,"html.parser")
for i in soup.find_all("a"):
    print(i.text)
driver.quit()

Bununla google’dan bilgi çekemiyorum lakin duckduckgo da çekebiliyorum?

selenium.common.exceptions.NoSuchElementException: Message: {"errorMessage":"Unable to find element with xpath '//*[@id='lst-ib']'","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"101","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:55776","User-Agent":"Python-urllib/3.6"},"httpVersion":"1.1","method":"POST","post":"{\"using\": \"xpath\", \"value\": \"//*[@id='lst-ib']\", \"sessionId\": \"99e67820-5f84-11e8-b467-59736f997e1c\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/99e67820-5f84-11e8-b467-59736f997e1c/element"}}
Screenshot: available via screen

Hatasını Veriyor…

Google dan da çekilir ama lst-ib id 'li elementi bulamamış, elementlerin tespiti için chrome da şu eklentiler var, eskiden firefox da da vardı şimdi desteklemiyor, chrome a şu eklentileri kurabilirsen ,
Firebug Lite ve firepath bu firepath 'ın ikamesini chrome mağazasında bulabilirsin, bu eklentileri kullanarak id leri elde edebilirsin.
yani herhangi bir siteye sorunsuz girip gezersin ama id leri doğru yazmalısın.

Hocam Sorunun Çözümü İnternette Var Lakin Çalışmıyor…https://www.youtube.com/watch?v=A1nJ66Vmkaw Hatta buradada gösteriyor zaman kaynaklıymış fakat çalışmıyor bende…

o elementi yükleyene kadar bekle tarzında bir kod yazmak gerek bunun için wait.until yani id gelene kadar bekle yapmak gerek, çok eskilerdeen yaptığım çalışmaları bulamadım bulabilseydim burda paylaşırdım ama bulunca paylaşırım yine de :

from selenium.webdriver.support.wait import WebDriverWait
element = WebDriverWait(driver, 10).until(
    lambda x: x.find_element_by_id("herhangibirid"))

Yok Reis Aynı Sorun Devam Ediyor…Sanırım PhantomJS İle İlgili Bir Sorunmuş Lakin Firefoxtada URL’e Gitmiyor.