Während Selen verlockend und nützlich erscheint, hat es ein Hauptproblem, das nicht behoben werden kann: Leistung. Wenn Sie jedes einzelne Ding eines Browsers berechnen, benötigen Sie viel mehr Energie. Selbst PhantomJS konkurriert nicht mit einer einfachen Anfrage. Ich empfehle, dass Sie Selenium nur dann verwenden, wenn Sie wirklich auf Schaltflächen klicken müssen. Wenn Sie nur Javascript benötigen, empfehle ich PyQt (überprüfen Sie https://www.youtube.com/watch?v=FSH77vnOGqU, um es zu lernen).
Wenn Sie jedoch Selenium verwenden möchten, empfehle ich Chrome über PhantomJS. Viele Benutzer haben Probleme mit PhantomJS, wo eine Website in Phantom einfach nicht funktioniert. Chrome kann auch kopflos (nicht grafisch) sein!
Stellen Sie zunächst sicher, dass Sie ChromeDriver installiert haben, von dem Selenium für die Verwendung von Google Chrome abhängig ist.
Dann stellen Sie sicher, dass Sie Google Chrome Version 60 oder höher, indem sie es in der URL-Chrom-Überprüfung: // settings/Jetzt
helfen, alles, was Sie tun müssen, ist der folgende Code:
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)
Wenn Sie nicht wissen, wie Selen zu verwenden, hier ist ein kurzer Überblick:
driver.get("https://www.google.com") #Browser goes to google.com
Finding Elemente: verwenden Sie entweder die Elemente oder Elemente-Methode. Beispiele:
driver.find_element_by_css_selector("div.logo-subtext") #Find your country in Google. (singular)
- driver.find_element (n) _by_css_selector (css_selector) # Jedes Element, das diesem CSS-Selektor passt
- driver.find_element (n) _by_class_name (class_name) # Jedes Element mit der folgenden Klasse
- driver.find_element (n) _by_id (id) # Jedes Element mit der folgenden ID
- driver.find_element (n) _by_link_text (LINK_TEXT) # Jeder mit dem vollständigen Link-Text
- driv er.find_element (e) _by_partial_link_text (partiell_link_text) # Jeder mit partiellem Linktext.
- driver.find_element (n) _by_name (name) # Jedes Element where name = Argument
- driver.find_element (n) _by_tag_name (tag_name) # Jedes Element mit dem Tag-Namen Argumente
Ok! Ich habe ein Element (oder eine Elementliste) gefunden. Aber was mache ich jetzt?
Hier sind die Methoden, die Sie auf einem Element tun Elem:
- elem.tag_name # -Taste in einem zurückkehren kann.
- elem.get_attribute ("id") # Gibt die ID eines Elements.
- elem.text # Der innere Text eines Elements.
- elem.clear() # Löscht eine Texteingabe.
- elem.is_displayed() # gilt für sichtbare Elemente, Falsch für unsichtbare Elemente.
- elem.is_enabled() # Wahr bei einem aktivierten Eingang, sonst Falsch.
- elem.is_selected() # Ist das Optionsfeld oder ausgewählte Checkbox Element?
- elem.location # A Wörterbuch die X- und Y-Position eines Elements auf dem Bildschirm darstellt.
- elem.click() # Klicken Sie Elem.
- elem.send_keys ("thelegend27") # Typ thelegend27 in Elem (nützlich für Texteingaben)
- elem.submit() # Senden Sie das Formular, in dem Elem teilnimmt.
Spezielle Befehle:
- driver.back() # Klicken Sie auf die Schaltfläche Zurück.
- driver.forward() # Klicken Sie auf die Schaltfläche Forward.
- driver.refresh() # Aktualisieren Sie die Seite.
- driver.quit() # Schließen Sie den Browser mit allen Registerkarten.
- foo = driver.execute_script ("return 'Hallo';") # javascript Execute (KÖNNTE RETURN Werte annehmen!)
So gibt es keine Möglichkeit, Anfragen Javascript verwenden zu haben. – Ben
Nein, Anfragen ist eine http-Bibliothek. Es kann kein Javascript laufen. – sberry
Wo hast du gesucht und mit welchem Tool hast du Ben gefunden? Ich versuche das gerade jetzt und ich stecke fest – codyc4321