2017-07-26 6 views
0

nodejs est nouveau pour moi, et je viens de commencer à apprendre des scrapers web. Le problème est que j'ai besoin de scrapper un site Web qui est protégé avec JS. Donc, j'ai besoin d'obtenir des téléphones du site Web, mais div avec le numéro de téléphone apparaît seulement après que l'utilisateur clique sur le bouton "Afficher le numéro". Y a-t-il des moyens ou des npm pour obtenir les chiffres? Voici le site Web enter link description here, mais il est en langue russe. Donc, le bouton est "показать телефоны". Merci d'avance!Nodejs écrit un grattoir qui peut lire les sites Web protégés par JS

+0

Vous allez vouloir utiliser un outil comme le sélénium pour faire le raclement .. il fonctionne sur des sites avec des données générées dynamiquement, ainsi que d'interagir avec le site en utilisant la saisie des données et les interactions de souris virtuels. – zipzit

Répondre

1

Accédez à la page contenant les numéros de téléphone, ouvrez la console et consultez vos outils réseau. Lorsque vous cliquez sur un numéro de téléphone, il fait une demande de paiement ajax et vous donne une bonne réponse au format

{"status":"ok","phone":"+7 (727) 317-20-86","html_tooltip":"<section class=\"company-phones-tooltip\">\r\n <div class=\"company-phones-tooltip__wrap\">\r\n  <header class=\"company-phones-tooltip__header\">\r\n   Inform the manager that you learned the information on Allbiz.\r\n  <\/header>\r\n  <ul class=\"company-phones-tooltip-list\">\r\n       <li class=\"company-phones-tooltip-list__item\">\r\n     <div class=\"company-phones-tooltip-list__name\">\r\n      management\r\n     <\/div>\r\n     <div class=\"company-phones-tooltip-list__number\">\r\n      +7 (727) 317-20-86\r\n     <\/div>\r\n    <\/li>\r\n     <\/ul>\r\n  <footer class=\"company-phones-tooltip__footer\">\r\n   <a class=\"company-phones-tooltip__link\" href=\"https:\/\/12246-kz.all.biz\/contacts\" target=\"_blank\">\r\n    Show all contacts\r\n   <\/a>\r\n  <\/footer>\r\n <\/div>\r\n<\/section>"} 

Afin d'imiter ce que vous avez juste besoin de faire un appel au point d'extrémité http://api.all.biz/ajax/viewphonenew/kz avec les paramètres corrects après grattage la page . Et tous les paramètres de requête nécessaires pour ce point de terminaison se trouvent dans l'élément html.

<div class="company-phones__wrap" data-click="company-phones" data-entid="58474" data-verify="bYjmFpAfm5QWOgIjx8cyNOARdSG3FIoPo6he2dYGLIc=" data-phone="Zk6xDyCXPMqWMXgTaCI51A24FHIsDwuy8IaF993LsHI=" data-country="kz" data-placement="company-phones-tooltip___3" data-tooltip-direction="left" data-source="list"> 
     <div class="company-phones__code">+7(7&nbsp;</div> 
     <div class="company-phones__main" data-ga="show-phones-list" data-ga-id=""> 
      <div class="company-phones__btn">Показать телефоны</div> 
     </div> 
    </div> 
+0

je vous remercie pour votre réponse, j'ai essayé de le faire, mais il ne sort que "demande d'erreur" –

+0

avez-vous essayé cette méthode? cela a-t-il fonctionné pour vous? peut-être que j'ai fait quelque chose de mal –