Bot voor bestellen van producten zonder api

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • tomboo91
  • Registratie: Januari 2017
  • Laatst online: 04-02-2024
Beste Tweakers!

Ik ben voor een webshop bezig om de bestelling bij leveranciers te automatiseren. Voor een aantal leveranciers heb ik een scriptje geschreven met de mogelijkheid om via een api of automatisch gegenereerde mail dingen te bestellen (if voorraad < gewenst then hup bestellen!). Eerlijk is eerlijk het is nog steeds niet heel geavanceerd maar scheelt een hoop werk!

Echter heeft één van mijn grootste leveranciers (is een niche markt dus echt groot zijn ze ook weer niet) enkel een hopeloos oude website waar de bestellingen op gedaan moeten worden. Via de mail nemen ze officieel geen orders aan en als ze dat wel doen gaat het altijd fout. (Organisatorisch een schijtbedrijf maar wel goedkoop en snel.)

Hoe heb ik dit tot nu toe aangepakt:
- Ik run een aantal keer per week handmatig een script in php (als plugin op mijn website) die checkt welke producten lager zijn dan de gewenste voorraad.
- Vervolgens laat mijn pagina een lijst zien van producten welke besteld moeten worden per leverancier, de aantallen etc. Hier kan ik handmatig nog wat aanpassingen in doen / producten toevoegen, aantallen aanpassen of producten uit zetten.
- Vervolgens kan ik per leverancier op bestellen drukken waar een eigen scriptje uitgevoerd wordt wat verschilt van automatisch een mail met bestelling genereren tot via een api een bestelling doen.

Nu wil ik voor deze situatie dus eigenlijk mijn manuele invoer aan het front end automatiseren. Ik heb geprobeerd een post actie naar het "bestel mandje" te doen maar deze heeft niet het productnummer nodig maar een productID welke ik natuurlijk niet heb. Ik kan dmv een post-functie en productnummer een productpagina openen. Maar hoe kan ik mijn script dan ook nog netjes het aantal invullen en op "in mandje" klikken. En dit dan voor een tiental producten op de achtergrond.

Iemand wat informatie / literatuur / tips om mij een zetje de juiste richting op te zenden?

Alvast bedankt!

[ Voor 4% gewijzigd door tomboo91 op 02-04-2020 15:53 ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 01-10 12:56

Nick_S

++?????++ Out of Cheese Error

Wij automatiseren onze frontend testen met behulp van Testcafe. Dit is volgens mij ook prima in te zetten om geautomatiseerd een website te bedienen.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • +3 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 09:31

Standeman

Prutser 1e klasse

Als aanvulling op ^^ kan je ook kijken naar Selenium.

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 26-09 12:50
Of simpelweg de productid van hun website opslaan bij de productnaam in je eigen omgeving. Met de aanname dat die website niet telkens van productid wisselt, maar ik heb al gekkere dingen gezien.

Acties:
  • 0 Henk 'm!

  • tomboo91
  • Registratie: Januari 2017
  • Laatst online: 04-02-2024
Nick_S schreef op donderdag 2 april 2020 @ 15:53:
Wij automatiseren onze frontend testen met behulp van Testcafe.
Standeman schreef op donderdag 2 april 2020 @ 16:31:
Als aanvulling op ^^ kan je ook kijken naar Selenium.
Ik ga me hier is in verdiepen! Bedankt!
Postman schreef op donderdag 2 april 2020 @ 23:59:
Of simpelweg de productid van hun website opslaan bij de productnaam in je eigen omgeving. Met de aanname dat die website niet telkens van productid wisselt, maar ik heb al gekkere dingen gezien.
Heb ik ook aan zitten denken, maar dan moet ik nogsteeds een script schrijven die in een webpagina gaat zoeken naar deze id's aangezien een paar 1000 van deze nrs opzoeken en overschrijven echt geen doen is.Daarnaast is mij al opgevallen dat een product soms van de site gegooid wordt en opnieuw geupload wordt met als gevolg een nieuwe Id. Dan lijkt mij bovenstaande idee wat sneller / makkelijker.

Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 26-09 12:50
tomboo91 schreef op vrijdag 3 april 2020 @ 09:00:
Heb ik ook aan zitten denken, maar dan moet ik nogsteeds een script schrijven die in een webpagina gaat zoeken naar deze id's aangezien een paar 1000 van deze nrs opzoeken en overschrijven echt geen doen is.Daarnaast is mij al opgevallen dat een product soms van de site gegooid wordt en opnieuw geupload wordt met als gevolg een nieuwe Id. Dan lijkt mij bovenstaande idee wat sneller / makkelijker.
Een scraper is op zich zo gemaakt, en ook hiervoor zijn al standaard oplossing voor.
Wat inderdaad een probleem is als producten opeens van ID gaan wisselen, dan gaat het niet goed komen natuurlijk.

Kijk trouwens wel uit met die automated test tools (zoals Selenium). Deze gaan uit van een specifieke tab volgorde (bij mijn weten) en mocht de pagina opeens iets veranderen (en tabs kunnen nogal raar zijn in dat opzicht) dan kun je dus zomaar opeens het verkeerde product gaan bestellen. Ik zou persoonlijk dit dan ook alleen gebruiken voor het vullen van een winkelwagen en die dan vervolgens nog goed te controleren.
Maar ja, als je dan een product hebt met eenzelfde naam en twee verschillende ID's dan zie je dit nog niet terug in de winkelmand. Blijft hoe dan ook een lastige situatie. Misschien de leverancier bewegen om een nieuwe website te maken ;)

Acties:
  • 0 Henk 'm!

  • tomboo91
  • Registratie: Januari 2017
  • Laatst online: 04-02-2024
Postman schreef op vrijdag 3 april 2020 @ 09:29:
[...]
Ik zou persoonlijk dit dan ook alleen gebruiken voor het vullen van een winkelwagen en die dan vervolgens nog goed te controleren. ...
... Misschien de leverancier bewegen om een nieuwe website te maken ;)
Het was sowieso het idee om enkel het mandje te vullen zodat ik er nog even overheen kan kijken om te checken.

Die leverancier wordt gerund door een paar mensen die tegen (of over) hun pensioen leeftijd zitten. Dus die zitten niet echt te wachten op een nieuwe website heb ik al gemerkt.

Acties:
  • +1 Henk 'm!

  • Sharkware
  • Registratie: November 2003
  • Laatst online: 22-09 21:18
Postman schreef op vrijdag 3 april 2020 @ 09:29:
[...]
...
Kijk trouwens wel uit met die automated test tools (zoals Selenium). Deze gaan uit van een specifieke tab volgorde (bij mijn weten) en mocht de pagina opeens iets veranderen (en tabs kunnen nogal raar zijn in dat opzicht) dan kun je dus zomaar opeens het verkeerde product gaan bestellen. Ik zou persoonlijk dit dan ook alleen gebruiken voor het vullen van een winkelwagen en die dan vervolgens nog goed te controleren.
...
Je moet in Selenium op de een of andere manier vertellen welk element hij moet gebruiken om een actie op uit te voeren. Dit kun je oa. doormiddel van xpath doen. Die kun je dan (vaak) zo expliciet schrijven dat puur het wisselen van de volgorde geen invloed heeft. In het geval dat je xpath geen element oplevert (of teveel elementen) kun je ook een foutmelding gooien zodat je weet dat je script aangepast moet worden op de wijzigingen op de website.

Acties:
  • +1 Henk 'm!

  • FredPlacemet
  • Registratie: Maart 2020
  • Laatst online: 12-04-2022
Ik weet niet hoe die website is opgebouwd, is het niet mogelijk om de post na te maken en deze te versturen met GuzzleClient?

http://docs.guzzlephp.org...t.html#post-form-requests

Hierdoor kun je in principe realiseren dat je een post naar hun website doet en in hun optiek op hun website besteld. Indien dat niet kan zou ik persoonlijk gaan kijken naar een oplossing met byv een FTP (indien dat wel realiseerbaar voor hun is).

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Postman schreef op vrijdag 3 april 2020 @ 09:29:
[...]
Kijk trouwens wel uit met die automated test tools (zoals Selenium). Deze gaan uit van een specifieke tab volgorde (bij mijn weten) en mocht de pagina opeens iets veranderen (en tabs kunnen nogal raar zijn in dat opzicht) dan kun je dus zomaar opeens het verkeerde product gaan bestellen.
De truc bij selenium / alle webtools is dat je de manier waarop het gewenste element moet worden teruggevonden zo uniek mogelijk en tegelijk zo generiek mogelijk is :)

Is hij te uniek (bijv alleen een id) dan gaat hij stuk als ze hem opnieuw uploaden.
Is hij te generiek (bijv product 100 in een lijst van 1000) dan gaat hij stuk als ze iets anders toevoegen.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Nick_S schreef op donderdag 2 april 2020 @ 15:53:
Wij automatiseren onze frontend testen met behulp van Testcafe. Dit is volgens mij ook prima in te zetten om geautomatiseerd een website te bedienen.
Testcafe draait alleen vziw niet headless, en is dus niet zo geschikt om als basis voor een bot te gebruiken.

Klinkt mij meer alsof @tomboo91 met Puppeteer aan de gang zou moeten gaan.

Acties:
  • +2 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Je kunt m.i. beter ipv met selenium te werken beter gewoon de HTTP interacties die de website doet (formulier posts e.d.) nadoen. Dus gewoon direct vanuit je code. Nadeel van Selenium is dat het een echte browser gebruikt, en dit gaat gewoon vaak mis (loopt vast, timing issues met 't laden van een pagina).

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Sharkware
  • Registratie: November 2003
  • Laatst online: 22-09 21:18
Hydra schreef op dinsdag 7 april 2020 @ 13:15:
Je kunt m.i. beter ipv met selenium te werken beter gewoon de HTTP interacties die de website doet (formulier posts e.d.) nadoen. Dus gewoon direct vanuit je code. Nadeel van Selenium is dat het een echte browser gebruikt, en dit gaat gewoon vaak mis (loopt vast, timing issues met 't laden van een pagina).
Ontopic: Dit lijkt mij ook een betere oplossing.
Offtopic: Selenium kun je heel stabiel krijgen, maar kost wat tijd omdat je rekening moet houden met allerlei zaken die fout zouden kunnen gaan.

Acties:
  • 0 Henk 'm!

  • FredPlacemet
  • Registratie: Maart 2020
  • Laatst online: 12-04-2022
Worden er toevallig EAN's aangegeven bij de webshop?

een EAN is namelijk altijd voor een product en kan niet meerdere keren voorkomen.

Daarnaast zou ik wat @Hydra aanbeveelt inbouwen. Dit kun je dan doen met een cron die byv elke dag de bestellingen doet.

Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:53
@FredPlacemet EAN uniek is een hele gevaarlijke aanname.

Tijdje terug voor een klant producten van een poolse leverancier gekoppeld aan bestaande producten in de webshop, op EAN. Als er een incourant artikel in de feed van de poolse leverancier stond, was de EAN code onjuist, maar hadden ze dan de EAN code van een product met dezelfde vendorcode maar van een andere fabrikant ingevuld. Ook zo nu en dan EAN codes met 2 nummers omgedraaid...

Gevolg: iemand bestelt een radiateur en krijgt een airco droger. Of iemand bestelt een set nokkenassen van 400 adviesprijs en betaalt daar 25 euro voor omdat de prijsberekening uitgaat van de goedkoopste leverancier met voorraad, wat in dit geval een airco droger van 15 euro inkoop bleek te zijn. (ding is daadwerkelijk geleverd ook, uit eigen voorraad :X).

Collega riep nog: "Zou je dat wel doen? Meeste leveranciers doen maar wat met EAN codes, heb dat ook bij leverancier X gezien", helaas moest ik hem achteraf daar gelijk in geven :X.

[ Voor 10% gewijzigd door _JGC_ op 07-04-2020 17:11 ]


Acties:
  • 0 Henk 'm!

  • GrooV
  • Registratie: September 2004
  • Laatst online: 04-10 15:27
Dat zou je weer af kunnen vangen door er een verificatie stap in te zetten. Voorraad X is op. Product id met product naam X heet op de website Productnaam X. Bestellen? Ja/Nee -> bestel proces uitvoeren.

Scheelt je nog steeds werk en voorkomt dat je dadelijk met een Airco komt te zitten

Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
tomboo91 schreef op vrijdag 3 april 2020 @ 09:47:
[...]

Die leverancier wordt gerund door een paar mensen die tegen (of over) hun pensioen leeftijd zitten. Dus die zitten niet echt te wachten op een nieuwe website heb ik al gemerkt.
Dan lost het probleem zich vanzelf wel een keertje op, die mensen gaan vast wel een keer stoppen of het bedrijfje verkopen :)

Driving a cadillac in a fool's parade.


Acties:
  • 0 Henk 'm!

  • FredPlacemet
  • Registratie: Maart 2020
  • Laatst online: 12-04-2022
_JGC_ schreef op dinsdag 7 april 2020 @ 17:10:
@FredPlacemet EAN uniek is een hele gevaarlijke aanname.

Tijdje terug voor een klant producten van een poolse leverancier gekoppeld aan bestaande producten in de webshop, op EAN. Als er een incourant artikel in de feed van de poolse leverancier stond, was de EAN code onjuist, maar hadden ze dan de EAN code van een product met dezelfde vendorcode maar van een andere fabrikant ingevuld. Ook zo nu en dan EAN codes met 2 nummers omgedraaid...

Gevolg: iemand bestelt een radiateur en krijgt een airco droger. Of iemand bestelt een set nokkenassen van 400 adviesprijs en betaalt daar 25 euro voor omdat de prijsberekening uitgaat van de goedkoopste leverancier met voorraad, wat in dit geval een airco droger van 15 euro inkoop bleek te zijn. (ding is daadwerkelijk geleverd ook, uit eigen voorraad :X).

Collega riep nog: "Zou je dat wel doen? Meeste leveranciers doen maar wat met EAN codes, heb dat ook bij leverancier X gezien", helaas moest ik hem achteraf daar gelijk in geven :X.
Wij hebben hier dus totaal geen problemen mee, maar ligt natuurlijk ook maar net hoe proffesioneel en goed die leverancier het voor elkaar heeft.
Pagina: 1