Ich hab das Ganze mal schnell in Python runtergeschrieben. Funktioniert so:
- Produktseite aufrufen
- das "In den Warenkorb legen" Formular parsen, 999 einsetzen und absenden
- die genaue Zahl aus der Fehlermeldung ziehen.
Alles in Allem 50 Zeilen. Die Ergebnisse speichern und auswerten überlasse ich anderen.
@kaiwe: Ich empfehle dir, den Code genau anzuschauen. Gerade für solche Automatisierungen ist Python wie geschaffen. Das Prinzip kann man schnell auch auf andere Probleme übertragen.
[src=python]import requests
from BeautifulSoup import BeautifulSoup
import re
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
"Accept-Language": "de,en-US;q=0.7,en;q=0.3"
}
def check_amazon_status(url):
# Produktseite abrufen
s = requests.Session()
print ">>",url
response = s.get(url, headers=headers)
# Das "Zum Warenkorb hinzufuegen"-Formular nachbauen -
# dazu suchen wir alle <input>-Tags und speichern die in "values"
form = BeautifulSoup(response.text).findAll('form', id='addToCart')
form = form[0]
url2 = 'https://www.amazon.de' + form['action']
values = {}
for field in form.findAll('input'):
if not field.has_key('name') or not field.has_key('value'):
continue
if field['type'] != 'submit':
values[field['name']] = field['value']
elif field['name'] == 'submit.add-to-cart':
values[field['name']] = field['value']
# quantity ueberschreiben wir mit 999, um den Fehler zu provozieren
values['quantity'] = '999'
# Zum Warenkorb hinzufuegen - wir senden das nachgebaute Formular
print ">>",url2
response = s.post(url2, headers=headers, data=values)
# wir nutzen einen regulaeren Ausdruck, um die Antwort im Text zu suchen. Nicht effizient, aber leicht zu coden.
match = re.search(r'momentan lediglich: (\d+)\.', response.text)
if match == None:
print "Keine Fehlermeldung gefunden!"
return None
print '-->',match.group(0) # der gefundene Text
return int(match.group(1)) # die gefundene Zahl im Text
# Beispiel
print check_amazon_status('https://www.amazon.de/Das-schwarze-Auge-Drakensang-Platinum/dp/B00553J2PQ/ref=sr_1_1?ie=UTF8&qid=1472735369&sr=8-1&keywords=drakensang')
[/src]
Der Code basiert auf Python 2 (nicht 3). Außerdem muss requests und BeautifulSoup installiert sein (gibt's beides über pip).