2017-08-27 1 views
1

J'essaie d'extraire les liens vidéo produits (qui sont générés dynamiquement par un autre service Web.L'emplacement est sous les images du produit sur le côté gauche). Vous pouvez vérifier le lien suivant, https://www.tokopedia.com/chocoapple/ready-stock-bnib-iphone-128gb-7-plus-jet-black-garansi-apple-1-tahun-10?src=topads Le "inspect element" google chrome montre l'étiquette div. Mais le même tag n'est pas présent dans la source de la page. Comment le faire? Je suis à la recherche de goQuery pour implémenter la tâche, mais je ne suis pas sûr que cela fonctionnera ou non. Je ne suis pas un développeur web alors s'il vous plaît envisager de donner des suggestions si ma description de la question n'est pas spécifique. Merci.GoLang Scraper. Comment faire pour gratter des liens générés dynamiquement sur un site Web?

Répondre

2

Si la balise n'est pas dans la source, GoQuery ne fonctionnera pas. GoQuery permet d'analyser la source HTML à l'aide d'une API de type jQuery.

Vous devez d'abord processus la page Web avec une WebKit sans tête comme PhantomJS, chromeless ou puppeteer. Chacun de ces outils vous permettra de traiter tout le Javascript sur la page Web avant de le traiter. De cette façon, l'AJAX pour le rendu de la vidéo qui vous intéresse sera traité et la source sera mise à jour. Vous pouvez alors télécharger la source correspondante qui devrait contenir la div.

+0

dans le monde nodejs il vaut la peine de noter que vous pouvez également utiliser nitghmarejs https://github.com/segmentio/nightmare –

+0

@schollz Traiter la page Web avec WebKit sans tête, est-ce la manière standard? Aussi, cela fonctionnera-t-il à grande échelle en termes de performance? –

+0

@yogesh_desai Pour autant que je sache, c'est la manière standard. Webkits Headless tirer parti des navigateurs pour faire le rendu et je ne sais pas une autre façon de le faire. En ce qui concerne la mise à l'échelle des performances, vous pouvez vous intéresser au chromeless qui peut vous permettre de mettre à l'échelle via AWS Lambda – schollz

1

Veuillez trouver l'étiquette suivante <img class="thumbnail-img horizontal" src="//i.ytimg.com/vi/oKR2fh09Nic/mqdefault.jpg">. Comme vous le voyez src contient ID "oKR2fh09Nic". Ce chemin est nécessaire https://www.youtube.com/watch?v=oKR2fh09Nic

De plus, vous pouvez utiliser http://youtube.com/get_video_info?video_id= oKR2fh09Nic pour charger des informations vidéo.

Exemple ici https://github.com/kkdai/youtube/blob/master/youtube.go

+0

Cela fonctionnera-t-il pour plusieurs vidéos? Comme le lien, j'ai partagé a 4 vidéos. Aussi, quand vous dites trouver la balise suivante qu'est-ce que cela signifie? –

+0

La balise que vous avez mentionnée

1

Vous avez probablement besoin d'évaluer la page comme un navigateur fait. Comme schollz l'a répondu, c'est possible via un navigateur sans tête (navigateurs utilisables via le cli ou un api, qui ne montre pas leur gui).

Dans le monde aller il y a chromedp

https://github.com/knq/chromedp

https://www.youtube.com/watch?v=_7pWCg94sKw

+0

Merci, je vais certainement y jeter un coup d'œil. Aussi, s'il vous plaît mon commentaire sur la réponse de schollz et fournir plus de détails. –

+0

Pour évaluer, est-ce que je dois charger la page par chromedp? Comment vais-je obtenir la source mise à jour de la page? Quelles fonctions de chromedp sont utiles pour moi? Une idée? –