Seite 1 von 1

Fehler beim importieren

Verfasst: Donnerstag 18. Februar 2021, 19:00
von tobi.wld
Hallo zusammen,
ich habe vorhin angefangen ein kleines Programm zu schreiben. Nun wollte ich zwischendrin mal testen und mir ist direkt ein Fehler aufgefallen.

Und zwar steht bei mir "ImportError: attempted relative import with no known parent package" und ich bekomme diesen nicht gefixt.

Habe bereits im Internet recherchiert, aber bin nicht weiter gekommen.
Bin noch neu bei Python, habe aber Erfahrung mit Java und C++

Falls jemand eine Idee hat gerne her damit.

Mein Code:

from selenium import webdriver
from selenium.webdriver.common.by import By
from.selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import excepted_conditions as EC
from selenium.webdriver.common.keys import Keys
import time


class InstagramBot():
def __init__(self, username, password):
self.username = username
self.password = password

self.browser = webdriver.Chrome("./chromedriver.exe")

def WaitForObject(self, type, string):
return WebDriverWait(self.browser, 3).until(EC.presence_of_element_located((type, string)))

def WaitForObjects(self, type, string):
return WebDriverWait(self.browser, 3).until(EC.presence_of_all_elements_located((type, string)))

def login(self):
self.browser.get("https://www.instagram.com/accounts/login")

Bot = InstagramBot("User", "Passwort")

Bot.login()

Re: Fehler beim importieren

Verfasst: Donnerstag 18. Februar 2021, 19:14
von Sirius3
Du hast einen Punkt zu viel:

Code: Alles auswählen

from.selenium.webdriver.support.ui import WebDriverWait
statt

Code: Alles auswählen

from selenium.webdriver.support.ui import WebDriverWait
Das nächste mal bitte die vollständige Fehlermeldung posten, sonst muß man lange nach der richtigen falschen Zeile suchen.

Re: Fehler beim importieren

Verfasst: Donnerstag 18. Februar 2021, 20:40
von tobi.wld
Okay, das hat geklappt. Nun habe ich aber direkt das nächste Problem :/
Und zwar ruft der mir die Bilder nicht auf, obwohl er sie eigentlich aufrufen müsste.


Mein Code:

Code: Alles auswählen

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time


class InstagramBot():
	def __init__(self, username, password):
		self.username = username
		self.password = password

		self.browser = webdriver.Chrome("./chromedriver.exe")

	def WaitForObject(self, type, string):
		return WebDriverWait(self.browser, 3).until(EC.presence_of_element_located((type, string)))
	
	def WaitForObjects(self, type, string):
		return WebDriverWait(self.browser, 3).until(EC.presence_of_all_elements_located((type, string)))

	def login(self):
		self.browser.get("https://www.instagram.com/accounts/login")

		fenster_cookies = self.WaitForObject(By.CSS_SELECTOR, "button.aOOlW.bIiDR").click()
		
		login_objects = self.WaitForObjects(By.CSS_SELECTOR, "input._2hvTZ.pexuQ.zyHYP")
		login_objects[0].send_keys(self.username)
		login_objects[1].send_keys(self.password)
		login_objects[1].send_keys(Keys.ENTER)

		fenster_benachrichtigungen = self.WaitForObject(By.CSS_SELECTOR, "button.aOOlW.HoLwm").click()

	def search_hashtag(self, hashtag):
		self.browser.get(f"https://www.instagram.com/explore/tags/{hashtag}/")

		self.browser.execute_script("windows.scrollTo(0, 4000)")

		all_photos = self.WaitForObjects(By.CSS_SELECTOR, "div.v1Nh3.kIKUG._bz0w")

		for photo in all_photos:
			photo.click()
			self.WaitForObject(By.CSS_SELECTOR, "[aria-label = 'Gefällt mir']").click()
			self.WaitForObject(By.CSS_SELECTOR, "[aria-label = 'Schließen']").click()

			time.sleep(5)

		
Bot = InstagramBot("BENUTZERNAME", "PASSWORT")

Bot.login()
Bot.search_hashtag("Hashtag")

Fehlercode:

Code: Alles auswählen

[color=#FF0000]Traceback (most recent call last):
  File "C:\Users\Tobi\Desktop\Instagram Bot\bot.py", line 52, in <module>
    Bot.search_hashtag("HASHTAG")
  File "C:\Users\Tobi\Desktop\Instagram Bot\bot.py", line 37, in search_hashtag
    self.browser.execute_script("windows.scrollTo(0, 4000)")
  File "C:\My_Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 634, in execute_script   
    return self.execute(command, {
  File "C:\My_Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\My_Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.JavascriptException: Message: javascript error: windows is not defined
  (Session info: chrome=88.0.4324.182)[/color]
Ich komme leider wieder nicht drauf, woran es liegen könnte

Re: Fehler beim importieren

Verfasst: Freitag 19. Februar 2021, 00:36
von __blackjack__
@tobi.wld: Das liegt daran das `windows` in der Zeile ``self.browser.execute_script("windows.scrollTo(0, 4000)")`` in JavaScript im Browser nicht definiert ist. Wieder ein ein-Zeichen-Schreibfehler. 🙂