Seite 1 von 1

Bestellbutton (javascript?) mittels mechanize betätigen

Verfasst: Samstag 6. September 2008, 19:58
von joker21
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

Verfasst: Sonntag 7. September 2008, 00:57
von epsilon
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)

Verfasst: Sonntag 7. September 2008, 11:06
von HWK
epsilon hat geschrieben:b) PyKHTML oder Ähnliches anschauen (PyKHTML versteht JavaScript)
Gibt es so etwas auch für Windows?
MfG
HWK

Verfasst: Sonntag 7. September 2008, 12:41
von lunar
QWebkit und PyQt4. Oder man spricht den IE oder Gecko über COM an.

Verfasst: Samstag 13. September 2008, 15:09
von joker21
Hallo,

(ich kam einige Tage nicht dazu, aber:)

das hat prima funktioniert! Danke für die Hilfe!

Verfasst: Sonntag 14. September 2008, 22:16
von HWK
lunar hat geschrieben:QWebkit und PyQt4. Oder man spricht den IE oder Gecko über COM an.
Ich habe dazu Pamie gefunden.
MfG
HWK