Postman + Nodejs = ❤️ ?

Bonjour à tous !

Je souhaitais vous partager une astuce probablement très utile pour scrapper : l’utilisation de nodejs grâce à postman.

Pour ceux qui connaissent pas : nodejs c’est du javascript côté serveur, très efficace pour scrapper notamment. Postman est un outil initialement conçu pour tester des API.

Toutefois, je rencontre actuellement quelques limites.
J’invoque le crew @ScraperMasters pour me confirmer ou m’infirmer mes expériences :smiley:

Je tente actuellement de scrapper le site suivant :
http://www.makelaarssite.nl

Je passe ainsi dans postman un id d’agent.


Je récupère mes infos, la vie va bien !

Mais c’est là que ça devient intéressant, postman me donne un script déjà préconçu en nodejs (il y’a également tous les autres langages curl, php, shell…)

Le soucis c’est que quand je tente passer plusieurs id, ça marche pas comme je le souhaite :

Serait-ce ce postman-token qui me bloquerait ? Ou devrais-je générer une boucle quelque part ?
Bref, qu’en pensez-vous ? :stuck_out_tongue:

Merci d’avance pour vos retours !

1 « J'aime »

C’est génial comme fonctionnalité ca. Je pense que tu dois faire un boucle for mais c’est que ta boucle for va envoyer toutes tes requêtes sans que les précédentes ne soient terminées (je ne sais pas si c’est un pb d’envoyer 100 requêtes par secondes)
Moi je ferai un truc en mode :

let arrayMakelaar=[« id1 »,« id2 »,"id3]
function sendRequest(array){
if(array.length>0){
sendMyRequest(array[0],function(err,result){
if(err){
console.log(‹ Got an error for ›+array[0],err);
}else{
array.shift(); //on retire le premier élément du tableau
sendRequest(array)
}
})
}else{
console.log(« fin du programme »);
}
}

// reste plus qu’à définir la fonction sendMyRequest avec un callback

//lancement des hostilités :slight_smile:
sendRequest(arrayMakelaar);

2 « J'aime »

Désole j’ai rep de mon téléphone.

Ahah pas de soucis !
Merci pour ta réactivité en tout cas, c’est très cool de ta part :slight_smile:

Tous les web serveurs ne traitent pas les multi-valued parameters de la même manière. A priori dans ton cas, les données pour la requête POST sont encodées en JSON, mais il ne semble pas possible d’envoyer une liste d’ID.

Il y a de fortes chances que le paramètre d’URL « makelaar » de la requête POST définisse uniquement un ID simple, et ne peut par conséquent pas être représenté par une liste en JSON.

Du coup une solution en boucle avec une itération pour chaque ID semble être la meilleure solution, comme suggéré par @boristchangang :slight_smile:

2 « J'aime »

J’ai commencé à le faire en parallèle avec nigthmare.
Mais étant noob sur nightmare ET nodejs, je galère avec les fonctions evaluate et autres promises.
Que du bonheur :smiley:

Tellement rapide @boristchangang :wink:

Hi @VivianSolide, Pourquoi ne pas directement utiliser le runner de postman pour ton scrap ? (http://blog.getpostman.com/2014/10/28/using-csv-and-json-files-in-the-postman-collection-runner/)

PS : Check Slack

1 « J'aime »

Ah ben oui…
Je vais tester de suite !
Merci :stuck_out_tongue: