Raspberry PI Geckodriver?
Kann mir irgendjemand einen Link zum Geckodriver für den Raspberry PI senden?
Denn die normalen Versionen sind nur für Linux und Windows und der RPI hat ja ein ARM Prozessor.
Kann mir jemand einen Link zum Geckodriver für RPI geben? Denn ich weiß auch nicht wie ich mir den selber aus dem Sourcecode machen soll, denn ich habe noch nie was mit Rust am Hut gehabt.
2 Antworten
Es gibt die Geckodriver für die Linux auf ARMv7 die gehen ab dem Pi 2B 1.1.
Wenn du die neuste Version brauchst wirst du die selbst Builden müssen. Im Github Repo findest du eine Anleitung für die ARMv7 Architektur.
Die Pi3 und 4 nutzen zwar ARMv8 aber der ARMv7 Build sollte dennoch passen.
Das erstere gilt nur für Windows.
das zweitere währe für Linux allerdings musst du dafür erst das Programm in zB /usr/bin ablegen oder einen Link dazu machen.
Wenn das Programm in deinem Homefolder liegt musst du den Pfad ändern auf /home/pi/geckodriver.
Für den alten 0.14 Release gibts sogar noch offizielle ARMv7 Builds zum Download
https://github.com/mozilla/geckodriver/releases?after=v0.15.0
Für neuere Releases muss ich erst schaun.
Weils mich gerade gewundert hat wie das mit dem selbst Kompilieren für die ARMv7 ist.
Im Grunde ist es ganz leicht. Ich habs per Crosscompiler von einer Ubuntu VM aus gemacht.
einfach die Commands:
sudo apt install gcc-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross
curl https://sh.rustup.rs -sSf | sh
Dann am besten einen restart.
Dann lädst du dir von hier
https://hg.mozilla.org/mozilla-central/file/tip/testing/
Die Ordner geckodriver mozbase und webdriver runter.
Diese 3 Ordner kopierst du in das selbe verzeichnis.
Dann machst du ein Terminal im Ordner geckodriver auf und gibst die Befehle:
rustup target install armv7-unknown-linux-gnueabihf
cat >>.cargo/config <<EOF
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
EOF
Der CAT Befehl ändert im wesentlichen im geckodriver Ordner nur die Datei unter .cargo/config. Danach sollte dort nur
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
drinnen stehen.
und anschließend:
cargo build --release --target armv7-unknown-linux-gnueabihf
ein. Dann braucht die VM etwa 10min und am Ende hast du unter Target/armv7../release deine Buildausgabe.
Den gesamten Releaseordner kopierts du nun so wie er ist auf deinen Pi ins Homeverzeichnis.
In deinem Python Script schreibst du dann:
self.bot = webdriver.Firefox(executable_path = '/home/pi/release/geckodriver')
Ich würde dir zwar wirklich empfehlen den Buildprozess mal zu machen weil es dir hilft zukünftige Releases selbst zu builden aber wenn es Probleme gibt kannst du eine PN an mich schicken und ich stelle dir den Build zur Verfügung den ich gerade gemacht habe um zu sehen ob die Anleitung funktioniert.
Ich habe das ergebnis allerdings noch nicht am Pi getestet.
Also erstmal vielen Dank für den ausführlichen Text! Ich glaube soviel Arbeit haben sich noch nicht viele gemacht, nur mein Problem ist wenn ich
rustup target install armv7-unknown-linux-gnueabihf
eingebe, kommt
bash: rustup: command not found.
Also wurde der Command nicht gefunden, ich habe aber Rust usw. (wie dus beschrieben hast gedownloadet.)
Ich werds zwar noch einmal versuchen, aber könnte ich trotzdem für den fall der fälle mal den build haben? :D
Hast du einen neustart gemacht?
Wenn nicht schau mal nach ob es das Verzeichnis ~/.cargo gibt?
Wenn ja mach mal
source $HOME/.cargo/env
Habe ein Raspberry Pi 4.
Mir hat dieser Post geholfen: https://www.raspberrypi.org/forums/viewtopic.php?t=167292
Genauer gesagt, dieser Geckodriver: https://gofile.io/d/wlJvs0
Normal ist es
aber ich soll dann im python skript das machen?