Formfeld bzw submit absenden mit urllib

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Michaela81
User
Beiträge: 18
Registriert: Samstag 5. September 2020, 18:47

Hallo,
ich habe ein wenig Angst zu fragen weil es nie gut kommt sich anzumelden und dann gleich Hilfe zu erwarten, aber ich traue mich jetzt einfach mal.
Ich habe gerade erst angefangen Python (V.3.7.7) zu lernen, ich denke soetwas geht immer am Besten wenn man ein Project vor Augen hat..
Ich möchte jetzt von einer Seite Daten abfragen, habe da aber Probleme.
Ich komme ich an einen Submit Button nicht vorbei. Ich habe früher sowas in einer Linuxbash mit curl gemacht, das Grundprinzip von Inputfeldern ist mir eigentlich bekannt.
Mit selenium habe ich diese Hürde auch testweise genommen, würde es aber gerne in Python 3 ohne exterene Module machen, also mit urllib.
Kann es sein das ich nicht weiterkomme weil da ein coockie benötigt wird ?
Ich habe massenhaft gegooglet, es gibt jede Menge Beispiele, meist aber für Python 2 mit urllib2, ich habe bisher aber nichts gefunden wie genau ich das für meinen speziellen Fall umsetzten kann. Und die längeren Erklärungen sind zumeist auf English, was ich nur rudimentär verstehe.

Code: Alles auswählen

<div class="row-fluid">
    <div class="span12 text-center">
		<form method="post" accept-charset="utf-8" class="form-horizontal" action="/disclaimer?referrer=/?q=&amp;poster=d@mn.dmca&amp;_method=submit"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div>		<div class="form-group">
            <button class="btn btn-primary" type="submit">I Agree</button>            <button class="btn" onclick="location.href='https://www.google.com/'; return false;" type="submit">I Decline</button>        </div>
		<div>
			(cookies must be enabled to continue)
		</div>
	</div>
</div>
Nicht unbedngt benötigt, aber trotzdem für mich interessant: Die Seite lädt per Script Daten nach. Diese Daten enthalten jeweils Checkboxen. Ich komme aber an deren Namen nicht ran weil die Daten direkt in die Seite eingefügt werden, im Seitenquelltext sind sie nicht zu sehen. Nur wenn man sie im Browser mit "Elemet untersuchen" oder anderen Entwicklertool anschaut, sind sie zu sehen.
Gibt es eine irgendwie geartete Möglichkeit die Namen der jeweiligen Checkboxen rauszubekommen bzw. den Code auch im Seitenquelltext sicht oder verarbeitbar zu machen ?



Was mir übrigens aufgefallen ist, ich wollte vor dem Posten die regeln anschauen. Der Link Regeln in viewtopic.php?f=1&t=17644 scheint aber irgendwie nicht mehr aktuell zu sein.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es kann eine ganze Reihe von Gründen geben, warum das nicht geht. Cookies sind eine davon. Andere sind eben die nachgeladenen Daten. Ohne die gesamte Seite zu betrachten, ist das nicht zu beurteilen.

Ich würde die selbst auferlegte Beschränkung, keine externen Module verwenden zu wollen, in Frage stellen. Mindestens mal das Modul requests solltest du einsetzten. Sonst re-implementierst du es eh selbst. Wenn es damit nicht geht, dann sind die JavaScript Anteile aufzuklären.
Michaela81
User
Beiträge: 18
Registriert: Samstag 5. September 2020, 18:47

Danke für die erste Antwort.
Das mit dem fehlenden Javascriptcode kann ich umgehen, irgendwann werde ich aber sicher wieder darauf stossen, deswegen wüsste ich gerne einen guten Ansatz was man da machen kann.
Wie geschrieben, mit Selenium kann ich den Button schon klicken, das speichert allerdings auch cookies.:

Code: Alles auswählen

search_field = driver.find_element_by_name("_method")
search_field.submit()
Auf lange Sicht werde ich wohl um requests nicht runkommen, Mir gings darum das gegebenenfalls weiter zu geben ohne von anderen verlangen zu müssen noch zusätzliches zu installieren.
Die Seite von für die ich das brauche ist www.nzbindex.com
Antworten