Çözüldü Python Selenium ile Instagram kullanıcı girişi

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

sancak146

Kilopat
Katılım
3 Mayıs 2019
Mesajlar
59
Merhaba Selenium ve Python kullanarak Instagram girişlerini otomatikleştirmek istiyorum fakat Instagram kullanıcı adı girişindeki inputa herhangi bir veri yazmayı beceremedim.
İnputu tanıtırken.
Xpath, css_selector ya da name kullanabiliyoruz burada xpath denedim fakat olmadı diğerlerinde'de aynı şekilde sorun yaşıyorum destek olabilecek var mı?

Python:
from selenium import webdriver.
from selenium.webdriver.common.by import By.
import time.

username = "testuser"
password = "pwd123"

driver = webdriver.Chrome(r"C:\Users\yusuf\Desktop\chromedriver.exe")
driver.maximize_window()

url = "https://www.instagram.com/"
driver.get(url)

userNameInput = driver.find_element(by=By.XPATH, value= '//*[@id="loginForm"]/div/div[1]/div/label/input')
time.sleep(2)

usernameInput.send_key(username)
time.sleep(2)

driver.close()
 
Çözüm
Aramadan önce 1-2 saniye bekle.

Ben firefox ile yaptım ama genel mantık aynı.

Python:
import time
from webbrowser import Chrome
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager

options = Options()
options.headless = False
driver = webdriver.Firefox(options=options, service=Service(GeckoDriverManager().install()))

username = "testuser"
password = "pwd123"

url = "https://www.instagram.com/"
driver.get(url)

time.sleep(2)

a = driver.find_element("xpath",'//*[@id="loginForm"]/div/div[1]/div/label/input')
b = driver.find_element("xpath",'/html/body/div[1]/section/main/article/div[2]/div[1]/div[2]/form/div/div[2]/div/label/input')
time.sleep(2)

a.send_keys(username)
b.send_keys(password)

time.sleep(2)

1665687703221.png


Python:
#öncelikle tüm paketlerini güncelle çünkü değişen çok şey var seleniumda
#pip install selenium
#pip install webdriver-manager

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = Options()
options.headless = False
driver = webdriver.Chrome(options=options, service=Service(ChromeDriverManager().install()))

username = "testuser"
password = "pwd123"

url = "https://www.instagram.com/"
driver.get(url)

time.sleep(2) #bu sleep öneli çünkü kimsenin interneti/pc'si çok hızlı değil sayfa yüklenmeyebilir

a = driver.find_element("xpath",'//*[@id="loginForm"]/div/div[1]/div/label/input')
b = driver.find_element("xpath",'/html/body/div[1]/section/main/article/div[2]/div[1]/div[2]/form/div/div[2]/div/label/input')
time.sleep(2)

a.send_keys(username)
b.send_keys(password)

time.sleep(2)
@sancak146 buyrun chrome kodu.
Hata mesajını iletir misin? Bir de sleep eklemene gerek yok böyle adımlarda.

Kod:
DevTools listening on ws://127.0.0.1:49770/devtools/browser/26bbca22-0d8b-4823-96ef-c940b7067272
[3240:12712:1013/202108.960:ERROR:interface_endpoint_client.cc(689)] Message 3 rejected by interface blink.mojom.Widget
Traceback (most recent call last):
 File "c:/Users/yusuf/Desktop/programlama/16_python_ile_bot_yazimi/16.5_,instagram.py", line 14, in <module>
 userNameInput = driver.find_element(by=By.XPATH, value= '//*[@id="loginForm"]/div/div[1]/div/label/input')
 File "C:\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 856, in find_element.
 return self.execute(Command.FIND_ELEMENT, {
 File "C:\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 429, in execute.
 self.error_handler.check_response(response)
 File "C:\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 243, in check_response.
 raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="loginForm"]/div/div[1]/div/label/input"}
 (Session info: chrome=106.0.5249.119)
Stacktrace:
Backtrace:
 Ordinal0 [0x00B51ED3+2236115]
 Ordinal0 [0x00AE92F1+1807089]
 Ordinal0 [0x009F66FD+812797]
 Ordinal0 [0x00A255DF+1005023]
 Ordinal0 [0x00A257CB+1005515]
 Ordinal0 [0x00A57632+1209906]
 Ordinal0 [0x00A41AD4+1120980]
 Ordinal0 [0x00A559E2+1202658]
 Ordinal0 [0x00A418A6+1120422]
 Ordinal0 [0x00A1A73D+960317]
PS C:\Users\yusuf\Desktop\programlama\16_python_ile_bot_yazimi> & C:/Python/Python38/python.exe c:/Users/yusuf/Desktop/programlama/16_python_ile_bot_yazimi/16.5_,instagram.py
c:/Users/yusuf/Desktop/programlama/16_python_ile_bot_yazimi/16.5_,instagram.py:8: DeprecationWarning: executable_path has been deprecated, please pass in a Service object.
 driver = webdriver.Chrome(r"C:\Users\yusuf\Desktop\chromedriver.exe")

DevTools listening on ws://127.0.0.1:49804/devtools/browser/aa8c9b56-fd10-4bbb-aa0c-d8a5933e009a
Traceback (most recent call last):
 File "c:/Users/yusuf/Desktop/programlama/16_python_ile_bot_yazimi/16.5_,instagram.py", line 14, in <module>
 userNameInput = driver.find_element(by=By.XPATH, value= '//*[@id="loginForm"]/div/div[1]/div/label/input')
 File "C:\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 856, in find_element.
 return self.execute(Command.FIND_ELEMENT, {
 File "C:\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 429, in execute.
 self.error_handler.check_response(response)
 File "C:\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 243, in check_response.
 raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="loginForm"]/div/div[1]/div/label/input"}
 (Session info: chrome=106.0.5249.119)
Stacktrace:
Backtrace:
 Ordinal0 [0x00B51ED3+2236115]
 Ordinal0 [0x00AE92F1+1807089]
 Ordinal0 [0x009F66FD+812797]
 Ordinal0 [0x00A255DF+1005023]
 Ordinal0 [0x00A257CB+1005515]
 Ordinal0 [0x00A57632+1209906]
 Ordinal0 [0x00A41AD4+1120980]
 Ordinal0 [0x00A559E2+1202658]
 Ordinal0 [0x00A418A6+1120422]
 Ordinal0 [0x00A1A73D+960317]
 Ordinal0 [0x00A1B71F+964383]
 GetHandleVerifier [0x00DFE7E2+2743074]
 GetHandleVerifier [0x00DF08D4+2685972]
 GetHandleVerifier [0x00BE2BAA+532202]
 GetHandleVerifier [0x00BE1990+527568]
 Ordinal0 [0x00AF080C+1837068]
 Ordinal0 [0x00AF4CD8+1854680]
 Ordinal0 [0x00AF4DC5+1854917]
 Ordinal0 [0x00AFED64+1895780]
 BaseThreadInitThunk [0x75C1FA29+25]
 RtlGetAppContainerNamedObjectPath [0x77C07BBE+286]
 RtlGetAppContainerNamedObjectPath [0x77C07B8E+238]

Konsolda böyle bir çıktı alıyorum ama anlam veremedim.
 
Aramadan önce 1-2 saniye bekle.

Ben firefox ile yaptım ama genel mantık aynı.

Python:
import time
from webbrowser import Chrome
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager

options = Options()
options.headless = False
driver = webdriver.Firefox(options=options, service=Service(GeckoDriverManager().install()))

username = "testuser"
password = "pwd123"

url = "https://www.instagram.com/"
driver.get(url)

time.sleep(2)

a = driver.find_element("xpath",'//*[@id="loginForm"]/div/div[1]/div/label/input')
b = driver.find_element("xpath",'/html/body/div[1]/section/main/article/div[2]/div[1]/div[2]/form/div/div[2]/div/label/input')
time.sleep(2)

a.send_keys(username)
b.send_keys(password)

time.sleep(2)

1665687703221.png


Python:
#öncelikle tüm paketlerini güncelle çünkü değişen çok şey var seleniumda
#pip install selenium
#pip install webdriver-manager

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = Options()
options.headless = False
driver = webdriver.Chrome(options=options, service=Service(ChromeDriverManager().install()))

username = "testuser"
password = "pwd123"

url = "https://www.instagram.com/"
driver.get(url)

time.sleep(2) #bu sleep öneli çünkü kimsenin interneti/pc'si çok hızlı değil sayfa yüklenmeyebilir

a = driver.find_element("xpath",'//*[@id="loginForm"]/div/div[1]/div/label/input')
b = driver.find_element("xpath",'/html/body/div[1]/section/main/article/div[2]/div[1]/div[2]/form/div/div[2]/div/label/input')
time.sleep(2)

a.send_keys(username)
b.send_keys(password)

time.sleep(2)
@sancak146 buyrun chrome kodu.
 
Son düzenleme:
Çözüm
Denedim fakat sonuç alamıyordum.

Böyle bir xpath olmadığı hatası alıyorsun. CSS ile bunu denedin mi? 'input[name=username]'

GitHub - burakkurtuk/instagram-bot-automation buradan da bakabilirsin mantığına. Ben Java ile yazdım.

Denedim fakat sonuç alamıyordum.

Aramadan önce 1-2 saniye bekle.

Ben Firefox ile yaptım ama genel mantık aynı.

Python:
import time.
from webbrowser import Chrome.
from selenium import webdriver.
from selenium.webdriver.firefox.options import Options.
from selenium.webdriver.firefox.service import Service.
from webdriver_manager.firefox import GeckoDriverManager.

options = Options()
options.headless = False.
driver = webdriver.Firefox(options=options, service=Service(GeckoDriverManager().install()))

username = "testuser"
password = "pwd123"

url = "https://www.instagram.com/"
driver.get(url)

time.sleep(2)

a = driver.find_element("xpath",'//*[@id="loginForm"]/div/div[1]/div/label/input')
b = driver.find_element("xpath",'/html/body/div[1]/section/main/article/div[2]/div[1]/div[2]/form/div/div[2]/div/label/input')
time.sleep(2)

a.send_keys(username)
b.send_keys(password)

time.sleep(2)

Eki Görüntüle 1543192

Python:
#öncelikle tüm paketlerini güncelle çünkü değişen çok şey var seleniumda.
#pip install selenium.
#pip install webdriver-manager

import time.
from selenium import webdriver.
from selenium.webdriver.chrome.options import Options.
from selenium.webdriver.chrome.service import Service.
from webdriver_manager.chrome import ChromeDriverManager.

options = Options()
options.headless = False.
driver = webdriver.Chrome(options=options, service=Service(ChromeDriverManager().install()))

username = "testuser"
password = "pwd123"

url = "https://www.instagram.com/"
driver.get(url)

time.sleep(2) #bu sleep öneli çünkü kimsenin interneti/pc'si çok hızlı değil sayfa yüklenmeyebilir.

a = driver.find_element("xpath",'//*[@id="loginForm"]/div/div[1]/div/label/input')
b = driver.find_element("xpath",'/html/body/div[1]/section/main/article/div[2]/div[1]/div[2]/form/div/div[2]/div/label/input')
time.sleep(2)

a.send_keys(username)
b.send_keys(password)

time.sleep(2)
@sancak146 buyurun Chrome kodu.

Teşekkür ederim artık çalıştırabiliyorum benim yazdığım kod ile benzerlikler olsa da yenilikler için çok fazla değil mi bu farklılık :/
 
İşte çok şey değişmiş maalesef.

Python:
from selenium import webdriver
import time

url = "https://www.instagram.com/"

username = "testuser"
password = "pwd123"

driver = webdriver.Chrome()
driver.maximize_window()

driver.get(url)
time.sleep(2)

driver.find_element("xpath", "//*[@id='loginForm']/div/div[1]/div/label/input").send_keys(username)
driver.find_element("xpath", "//*[@id='loginForm']/div/div[2]/div/label/input").send_keys(password)
time.sleep(1)

driver.find_element("xpath", "//*[@id='loginForm']/div/div[3]/button/div").click()
time.sleep(2)

driver.close()

Bakın en yalın hali ile bu şekilde çalıştırabildim daha öncesinde çalışmamıştı kafa karıştırıcı gerçekten :)
 

Technopat Haberler

Geri
Yukarı