Ist Selen langsam, oder ist mein Code falsch?

8

Also versuche ich mich mit Python in Quora einzuloggen und dann etwas zu kratzen.

Ich benutze Selenium, um mich auf der Seite anzumelden. Hier ist mein Code:

%Vor%

Jetzt die Fragen:

  1. Es dauerte ~ 4 Minuten, um das Login-Formular zu finden und zu füllen, was schmerzhaft langsam wurde. Gibt es etwas, was ich tun kann, um den Prozess zu beschleunigen?

  2. Wie habe ich mich bei der Anmeldung vergewissert, dass keine Fehler aufgetreten sind? Mit anderen Worten, wie überprüfe ich den Antwortcode?

  3. Wie speichere ich Cookies mit Selen, damit ich nach dem Login weiter scrappen kann?

  4. Wenn es keine Möglichkeit gibt, Selen schneller zu machen, gibt es dann noch eine andere Alternative für die Anmeldung? (Quora hat keine API)

Karan Goel 04.07.2013, 05:59
quelle

5 Antworten

6

Ich hatte ein ähnliches Problem mit sehr langsamen find_elements_xxx-Aufrufen in Python Selen mit dem ChromeDriver. Schließlich habe ich die Probleme auf einen Aufruf von driver.implicitly_wait () aufgespürt, den ich vor meinen find_element_xxx () -Aufrufen gemacht habe. Als ich es herausnahm, liefen meine find_element_xxx () -Aufrufe schnell.

Nun weiß ich , dass diese Elemente bei den find_elements_xxx () -Aufrufen vorhanden waren. Ich kann mir also nicht vorstellen, warum die implizite_wartung die Geschwindigkeit dieser Operationen beeinflusst haben sollte, aber sie hat es getan.

    
Polly 16.02.2016 01:01
quelle
3
  1. Ich war dort, Selen ist langsam. Es ist möglicherweise nicht so langsam wie 4 Minuten, um ein Formular zu füllen. Ich habe dann Phantomjs verwendet, was viel schneller ist als Firefox, da es kopflos ist. Sie können Firefox () einfach mit PhantomJS () in der Webdriver-Zeile ersetzen, nachdem Sie die neuesten phantomjs installiert haben.

  2. Um zu überprüfen, ob Sie sich eingeloggt haben, können Sie für ein Element angeben, das nach dem Login angezeigt wird.

  3. Solange Sie Ihren Treiber nicht beenden, sind Cookies verfügbar, um Links zu folgen

  4. Sie können versuchen, urllib zu verwenden und direkt auf den Login-Link zu posten. Sie können cookiejar verwenden, um Cookies zu speichern. Sie können sogar einfach Cookie speichern, schließlich ist ein Cookie einfach eine Zeichenfolge im http-Header

manish 04.07.2013 06:56
quelle
1

Das Starten von Firefox mit deaktiviertem Javascript wird helfen:

%Vor%     
alecxe 04.07.2013 19:47
quelle
0

Sie können Ihr Formular ausfüllen, indem Sie Ihre eigene setAttribute-Methode verwenden, hier ist Code für Java dafür

%Vor%     
Stormy 05.07.2013 12:51
quelle
0

Bei Windows 7 und IEDRIVER mit Python Selenium wurde das Problem durch das Beenden der Windows-Befehlszeile und den Neustart behoben.

Ich hatte Probleme mit find_element..clicks. Sie brauchten 30 Sekunden plus ein bisschen. Hier ist die Art von Code, den ich habe, einschließlich der Erfassung, wie lange zu laufen ist.

%Vor%

Das hat ungefähr 31 Sekunden für jeden Klick aufgezeichnet. Nach dem Beenden der Befehlszeile und dem Neustart (was jeden IEDRIVERSERVER.exe-Prozess beendet), war es 1 Sekunde pro Klick.

    
user3002067 12.03.2018 18:53
quelle