Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Absolute leek die "bot" wilt bouwen

Pagina: 1
Acties:

Vraag


  • nlnlnlnlnlnl
  • Registratie: augustus 2018
  • Laatst online: 06-04-2020
Beste Tweakers,

Allereerst, ik ben een complete leek in programmeren. Heb geen ervaring. Dus misschien is dit een hele domme, niet realistische vraag, maar ik hoor het graag. Ik weet trouwens ook niet of dit het goede forum is.

Goed, hier de vraag:

Ik wil, om meerdere redenen, proberen een bot te bouwen die een bepaalde taak voor mij uit gaat voeren. Ik denk dat ik dat bijv. mogelijk is met een taal als python.

Wat ik precies wil doen is het volgende. De bot moet bijvoorbeeld een bepaalde lijst aangeleverde waarden invoeren op een site, en wat de site zegt weer noteren in een document. Dus: is dit realistisch, is dit mogelijk? Zeker voor een beginner?

Ik wil het als eerst bijvoorbeeld gaan testen op een naam check website. Laten we als voorbeeld die minecraft naam check website nemen. Als dat lukt dan ga ik het ook voor andere dingen gebruiken.

Waar moet ik beginnen met leren, hebben jullie suggesties voor bronnen? Wil het liefst geen geld uitgeven voor cursussen etc.

Ik weet dat op Tweakers een eigen inzet word verwacht. Dus eigenlijk wil ik alleen maar weten of dit mogelijk is en waar ik moet beginnen met leren.

Ik ben best slecht in uitleggen wat ik wil als ik het zo teruglees, sorry. Ik hoop dat jullie me toch kunnen helpen :*)

Alle reacties


  • deathgrunt
  • Registratie: maart 2009
  • Niet online
De site waar je tegenaan gaat praten, moet wel iets van een API hebben - als je het goed doet.

Tenminste, zonder API kan ook, maar als je dan vrolijk 1.000 requests per uur (ik zeg maar wat) gaat afsturen op die 3rd-party site, kan je IP / server al snel op de blacklist komen.

Verder is wat je wil taal-agnostisch; het kan in python, maar ook in PHP of desnoods in JS (als je het client-side wil afhandelen).

In 5 minuten kan je een scriptje schrijven dat bv. de output van deze query afvangt;

https://namemc.com/search?q=tweakers

En de output knal je weer in een database, .csv (flat file system) of whatever...

  • TERW_DAN
  • Registratie: juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Dus als ik het goed begrijp wil je iets posten op een website, en het resultaat ervan opslaan? In dat geval zou ik er een JavaScriptdingetje voor bouwen, bijv als browserextensie. Maar geef eens concreet aan wat je ext wilt doen.

Op die minecraftsite kun je de search heel simpel doen in de URL. Dan hoef je alleen een paar elementen te controleren op de site en die te parsen.

  • deathgrunt
  • Registratie: maart 2009
  • Niet online
TERW_DAN schreef op zaterdag 24 november 2018 @ 18:45:
Dus als ik het goed begrijp wil je iets posten op een website, en het resultaat ervan opslaan? In dat geval zou ik er een JavaScriptdingetje voor bouwen, bijv als browserextensie. Maar geef eens concreet aan wat je ext wilt doen.

Op die minecraftsite kun je de search heel simpel doen in de URL. Dan hoef je alleen een paar elementen te controleren op de site en die te parsen.
Wat ik begrijp, is dat hij / zij een cron-job wil draaien op externe sites.

Die cron is een soort crawler die een request doet naar die externe site, met wat instelbare parameters.

De output van die query moet dan - door elementen uit de DOM te distilleren - opgeslagen worden in een database.

Een soort van data-crawler, dus...

  • RobIII
  • Registratie: december 2001
  • Laatst online: 16:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

De ene site is de andere niet. Wat voor de ene werkt zal voor de ander absoluut niet werken. In sommige gevallen zul je een GET moeten doen, in andere een POST (zie ook: idempotentie), in sommige van de keuzes die je hebt heb je te maken met CORS, in andere gevallen niet. In sommige gevallen zul je erg omslachtig middels uitpluizen van de HTML een login moeten zien te forceren en een cookie o.i.d. moeten gebruiken voor vervolg requests, in andere gevallen kun je gebruik maken van een fatsoenlijke (al-dan-niet REST-) API. Je zult toch écht eerst moeten leren kruipen voordat je kunt lopen dus tel er in ieder geval maar op dat je wat tutorials (en die zijn, quite literally, ein-de-loos op internet te vinden voor praktisch elke taal, in tekst en/of in video) zult moeten volgen en tel er maar op dat je niet met een middagje alles kent (en dat hoeft ook niet; als het doet wat je wil dat 't moet doen ben je er natuurlijk; maar als je niet aangeeft om welke site 't écht gaat is 't onmogelijk iets zinnigs te zeggen anders dan: leer de basics). Het concept "oefenen" op een (simpelere) site is niet verkeerd, maar hou er dus rekening mee dat de uiteindelijke site dusdanig kan verschillen van je oefensite dat het geleerde van de oefensite niet of nauwelijks toe te passen is op de uiteindelijke site en dus mogelijk een flinke 'waste of time' is als dit een eenmalig iets is.
deathgrunt schreef op zaterdag 24 november 2018 @ 18:46:
Wat ik begrijp, is dat hij / zij een cron-job wil draaien op externe sites.

Die cron is een soort crawler die een request doet naar die externe site, met wat instelbare parameters.
Nou, dit:
nlnlnlnlnlnl schreef op zaterdag 24 november 2018 @ 18:38:
De bot moet bijvoorbeeld een bepaalde lijst aangeleverde waarden invoeren op een site, en wat de site zegt weer noteren in een document
klinkt me niet echt als een "typische crawler" in de oren ;) Een crawler is in essentie vrij (of helemaal) "passief". Je voert 'm een pagina, die wordt opgehaald, bekeken, links naar andere pagina's eruit geëxtraheerd en die worden op hun beurt weer terug ingevoerd in 't proces (ad inifinitum of tot een opgegeven limiet is bereikt, de schijf vol is, geheugen vol, stack overflow optreedt :+ of iets in die richting). Hence the name.

Verder wil ik de "welke taal" vraag graag voor zijn met Welke programmeertaal moet ik leren?. Het maakt echt geen kont uit welke taal je leert; als je er al een zou kennen zou ik zeggen: go with it. Maar als je er nog geen kent is Python (net als zowat elke andere, laten we zeggen "gangbare", taal) een prima keuze. Je kunt ook esoterische talen als brainf*ck of whitespace of assembly kiezen maar dan ben je waarschijnlijk een tikje masochistisch aangelegd. Maar een python, lua, php, java, c#, vb.net, f#, powershell, javascript, ruby, go, rust, c, ... en ga zo maar door: allemaal prima keuzes (maar wel elke met hun eigen leercurves!). Kijk wat je 't best lijkt te liggen / ruik even aan een paar talen en kies dan iets. Let op zaken als: hoe groot is de community rondom de taal, is er genoeg over te vinden (kijk bijvoorbeeld op stackoverflow!) en kijk of 't verder voldoet aan alle eisen die je hebt (is er een budget of moet 't gratis, heb je te maken met bepaalde licentievormen die je misschien liever niet gebruikt, op welk platform / OS moet 't draaien, ... dat soort zaken).

Verder kan ik alleen maar 'categorieën' waarin je een taal zult zoeken adviseren (let wel: een deel hiervan is mijn persoonlijke voorkeur en voor elk argument dat ik vóór heb zullen 10 anderen een argument tegen hebben maar die weten niet waar ze over praten :+: static typed (leert je meteen een aantal goede principes aan), OOP of functioneel paradigma (wederom goede principes), interpreted is handig (snellere 'turnaround' tussen test, aanpassing, nieuwe test zonder tussendoor opnieuw moeten compileren enzo), managed (niet zelf aan geheugenbeheer e.d. moeten doen en je om elke bit en byte moeten bekommeren), liefst een 3GL of hoger... en zo kan ik nog wel even doorgaan. Python vinkt, wat dat betreft, de meeste (niet alle!) van die zaken wel af.

Het aller, aller, állerbeste advies dat je ooit in je programmeercarrière zult krijgen is: als het woord Regex valt in combinatie met HTML dan ren voor je leven. Je bent dan ab-so-luut, 200% zeker weten, ontzettend verkeerd bezig en degene die 't je probeert aan te praten hoort op 't schavot. No doubt about it. En geloof me, dat is een advies dat sommige mensen pas véél te laat krijgen dus 't is in dit geval fijn dat we er bij jou zo vroeg bij kunnen zijn. Neemt niet weg dat elke programmeur 't niet tóch wel eens heeft gedaan (uit nieuwsgierigheid, interesse, leermoment of puur masochisme) maar vroeger of later krijg je er spijt van. En remember kids: do as I say, not as I do ;) Overigens is dit het tweede beste advies dat je ooit zult krijgen en dit het derde maar die vereisen een oplopende mate van (basis)kennis om te begrijpen

Als je deze post helemaal doorgeworsteld hebt, de links hebt bekeken enzovoorts kom je in ieder geval beslagen (en waarschijnlijk vermoeid :P ) ten ijs. Ik verneem graag van je waar de factuur voor al deze wijsheid naar toe mag :>

[Voor 74% gewijzigd door RobIII op 24-11-2018 19:56]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Hydra
  • Registratie: september 2000
  • Nu online
@nlnlnlnlnlnl je zit in ieder geval met Python al een aardig eind op weg. Ik raad je wel aan simpel te beginnen; krijg eerst de basis van programmeren onder de knie voordat je met een site gaat 'praten'. Vergeet niet dat computers nogal snel zijn en je met een kleine fuckup zo duizenden malen iets 'verkeerds' doet op een site ;)

Met dat gezegd, Beautiful Soup is een bekende library waarmee je relatief simpel een website kunt lezen en daaruit informatie kunt halen. Hierop kun je dan weer reageren door ook weer informatie naar die site te sturen, zoals je hier een nieuw topic aanmaakt kun je dat ook via Python doen.

Automate the Boring Stuff is een boek dat goed aansluit bij wat jij wil gaan doen. Is zeker een aanrader. Als je meer vragen hebt, let me know.

https://niels.nu


  • Anoniem: 93248
  • Registratie: september 2003
  • Niet online
Hydra schreef op zondag 25 november 2018 @ 08:55:
@nlnlnlnlnlnl je zit in ieder geval met Python al een aardig eind op weg. Ik raad je wel aan simpel te beginnen; krijg eerst de basis van programmeren onder de knie voordat je met een site gaat 'praten'. Vergeet niet dat computers nogal snel zijn en je met een kleine fuckup zo duizenden malen iets 'verkeerds' doet op een site ;)

Met dat gezegd, Beautiful Soup is een bekende library waarmee je relatief simpel een website kunt lezen en daaruit informatie kunt halen. Hierop kun je dan weer reageren door ook weer informatie naar die site te sturen, zoals je hier een nieuw topic aanmaakt kun je dat ook via Python doen.

Automate the Boring Stuff is een boek dat goed aansluit bij wat jij wil gaan doen. Is zeker een aanrader. Als je meer vragen hebt, let me know.
Eerste wat bij mij naar boven kwam was inderdaad Beautiful Soup.
Begin maar eens met wat van die gratis online Python cursussen, je zult ergens een basis moeten leggen met de werking van de taal.

  • HD-readonly
  • Registratie: november 2010
  • Laatst online: 29-12-2019
Mooi verhelderend topic. Ik mis nog 1 ding wat een echt waardevolle aanvulling is voor starters. Moet je een online service hebben om de api's te bevragen?

Neem WAMP als voorbeeld (maar er zijn ook andere situaties denkbaar zoals LAMPP of linux oid) bij WAMP is er de mogelijkheid je server online te zetten. Je moet dan je provider vragen je DNS naar je eigen PC te zetten, maar mijn vraag is : moet je server online staan om twitter/facebook/instagram api's te bevragen ?

  • Creepy
  • Registratie: juni 2001
  • Laatst online: 13:57

Creepy

Moderator Devschuur®

Tactical Espionage Splatterer

Doe eens gek en probeer eens een API te benaderen vanaf je eigen PC...... ;) (spoiler: dat kan)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have star problems" --Kevlin Henney


  • HD-readonly
  • Registratie: november 2010
  • Laatst online: 29-12-2019
okay heel grappig is deze:

http://ip-api.com/php/

in een script toegepast moet je ip nummers simuleren anders krijg je alleen je eigen geolocatie output.

Maar werkt wel.

Zijn hier verder mensen die off-line succes hebben met twitter api queries?

  • RobIII
  • Registratie: december 2001
  • Laatst online: 16:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Hilarisch inderdaad :P
Er zijn ongeveer een miljoen-miljard API's en er komen er met de minuut bij (en er verdwijnen er net zo veel); dit is niet de plek om ze allemaal op te gaan noemen (laat staat te vragen om support / te beschrijven wat ze wel/niet doen en hoe/wat/waarom).
HD-readonly schreef op dinsdag 27 november 2018 @ 11:46:
in een script toegepast moet je ip nummers simuleren anders krijg je alleen je eigen geolocatie output.
"ip nummers simuleren" 8)7 Als je in de documentatie kijkt zie je:
You can call the API by sending HTTP GET requests to http://ip-api.com/json/{query}
{query} can be an IP address or a domain, or none to use the current IP address.
Je kunt dus gewoon http://ip-api.com/json/213.239.154.30 doen, daar is niks "simuleren" aan en is gewoon precies zoals de gemiddelde (REST-)API zich gedraagt.
HD-readonly schreef op dinsdag 27 november 2018 @ 11:46:
Zijn hier verder mensen die off-line succes hebben met twitter api queries?
Again; dit is niet het topic daarvoor, maar ook hier weer: whut? 8)7 Hoe wil je "off-line" een Twitter API gebruiken? :X De Twitter API is prima gedocumenteerd overigens.

[Voor 14% gewijzigd door RobIII op 27-11-2018 12:13]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij

Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True