Bestellbutton (javascript?) mittels mechanize betätigen

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
joker21
User
Beiträge: 17
Registriert: Sonntag 14. Oktober 2007, 11:36

Samstag 6. September 2008, 19:58

Hallo,

nachdem ich eine Website mittels mechanize/Beautifulsoup nach Angeboten durchsucht habe, möchte ich bestimmte Artikel in den Warenkorb legen.

Der html-Code sieht für diesen Artikel so aus:
<tr>

<td class="virgin"><a href="index.html?mainPage=showSellerChart&idInfoUser=10239">arion74</a></td>
<td class="sellerInfo"><img class="icon" src="img/user_private.png" alt=""
onmouseover="showMsgBox(window.event,'Privates Mitglied')"
onmouseout="hideMsgBox()"></td>
<td class="sellerInfo"><img class="icon" src="img/countryIcons/D.png" alt=""
onmouseover="showMsgBox(window.event,'Artikelstandort: Deutschland')"
onmouseout="hideMsgBox()"></td>

<td class="evalGrade">150</td>

</tr>
</table></td><td class="centered topRow"><a href="index.html?mainPage=showCardQualityChart" target="_blank">
<img class="icon" src="img/cardstateicons/MT.png" alt=""
onmouseover="showMsgBox(window.event,'Mint')"
onmouseout="hideMsgBox()"></a></td><td class="centered topRow"><img class="flagIcon" src="img/flagicons/1.png" alt=""
onmouseover="showMsgBox(window.event,'Englisch')"
onmouseout="hideMsgBox()"></td><td class="centered topRow"></td><td class="centered topRow"></td><td class="topRow"></td><td class="alignRight nowrap topRow">0,01 &#x20AC;</td><td class="centered topRow">5</td><td class="centered outerRight topRow"><form name="specForm418720" method="GET" action="index.html"><input type="hidden" name="mainPage" value="showProduct"><input type="hidden" name="idCategory" value="1"><input type="hidden" name="idProduct" value="17889"><input type="hidden" name="action" value="addSpecimenToShoppingCart"><input type="hidden" name="specimenId" value="418720"><table class="virgin"><tr><td class="virgin_padded"><select class="amount" name="amount" size="1" ><option selected value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select></td><td class="virgin_padded"><input type="image" src="img/shoppingbasket_add.png"
onmouseover="showMsgBox(window.event,'Karte(n) in den Einkaufswagen legen')"
onmouseout="hideMsgBox()"
alt="Submit"></td></tr></table></form></td></tr><tr class="even thick"><td class="outerLeft"><table>
<tr>
Wenn ich es richtig verstehe, löst der Button Javascript aus. Der entsprechende html-Code beginnt in der Zeile "name="specForm41872...".

Wie kann ich diesen Button (per mechanize) betätigen?

Das ganze betrifft z.B. die folgende Seite:
http://www.magickartenmarkt.de/index.ph ... duct=17889

Mit dem Unterschied, dass am Ende jeder Zeile der oben genannte Button erscheint, sofern man eingeloggt ist.

Gruß
Jochen
epsilon
User
Beiträge: 71
Registriert: Freitag 20. Juni 2008, 19:48

Sonntag 7. September 2008, 00:57

Hast du mal versucht das Formular zu übermitteln, ohne einen Button anzugeben? (Einfach click() oder submit() ohne Parameter ausführen). Das sollte eigentlich funktionieren.

Ansonsten kannst du:

a) das Formular "selber" übermitteln.
Dafür holst du dir per 'click_request_data()'* die bisherigen Daten aus dem Formular, hängst der URL, die du so bekommst, den Parameter für den Button an (musst du manuell herrausfinden). Dann rufst die URL einfach mit mechanize auf.

* click_request_data() kommt von ClientForm und sollte über das mechanize-Objekt verfügbar sein. Für Dokumentation, musst du dir den doc string ansehen.

b) PyKHTML oder Ähnliches anschauen (PyKHTML versteht JavaScript)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Sonntag 7. September 2008, 11:06

epsilon hat geschrieben:b) PyKHTML oder Ähnliches anschauen (PyKHTML versteht JavaScript)
Gibt es so etwas auch für Windows?
MfG
HWK
lunar

Sonntag 7. September 2008, 12:41

QWebkit und PyQt4. Oder man spricht den IE oder Gecko über COM an.
joker21
User
Beiträge: 17
Registriert: Sonntag 14. Oktober 2007, 11:36

Samstag 13. September 2008, 15:09

Hallo,

(ich kam einige Tage nicht dazu, aber:)

das hat prima funktioniert! Danke für die Hilfe!
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Sonntag 14. September 2008, 22:16

lunar hat geschrieben:QWebkit und PyQt4. Oder man spricht den IE oder Gecko über COM an.
Ich habe dazu Pamie gefunden.
MfG
HWK
Antworten