scrape dynamic pages met php
Hallo PHP'ers,
Op deze site, Klik hier om de pagina te bekijken, word een liedje getoond met het aantal "likes" en het aantal "plays".
Ik probeer om hieruit te likes en the plays uit te halen. Maar om 1 of andere reden lukt het mij totaal niet.
Dit is de code die ik tot nu toe heb om de bron eruit te halen:
Ik krijg de code wel te zien maar ik vind nergens de likes en de views terug.
Kan er iemand mij helpen naar de goede richting ?
Op deze site, Klik hier om de pagina te bekijken, word een liedje getoond met het aantal "likes" en het aantal "plays".
Ik probeer om hieruit te likes en the plays uit te halen. Maar om 1 of andere reden lukt het mij totaal niet.
Dit is de code die ik tot nu toe heb om de bron eruit te halen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
session_start();
$url = 'https://m.starmakerstudios.com/d/playrecording?app=sm&from_sid=62094808960&is_convert=true&pg_rf_ca_vn=248&recordingId=7881299415089640&share_type=copyLink';
$context = stream_context_create(
array(
"http" => array(
"header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
)
)
);
$html = file_get_contents($url, false, $context);
$doc = new DOMDocument;
libxml_use_internal_errors(true);
$doc->loadHTML($html);
libxml_clear_errors();
$xpath = new DOMXpath($doc);
print '<pre>';
print_r($xpath->document);
print '</pre>';
?>
session_start();
$url = 'https://m.starmakerstudios.com/d/playrecording?app=sm&from_sid=62094808960&is_convert=true&pg_rf_ca_vn=248&recordingId=7881299415089640&share_type=copyLink';
$context = stream_context_create(
array(
"http" => array(
"header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
)
)
);
$html = file_get_contents($url, false, $context);
$doc = new DOMDocument;
libxml_use_internal_errors(true);
$doc->loadHTML($html);
libxml_clear_errors();
$xpath = new DOMXpath($doc);
print '<pre>';
print_r($xpath->document);
print '</pre>';
?>
Kan er iemand mij helpen naar de goede richting ?
Ik vrees dat je met dynamische data (zoals ReactJS, VueJS etc) weinig kan doen met scrapen.
Je kan beter informeren of ze een API hebben. Dat blijft altijd nog de beste manier om data op te halen.
Je kan beter informeren of ze een API hebben. Dat blijft altijd nog de beste manier om data op te halen.
Gewijzigd op 06/08/2023 18:44:22 door - Ariën -
Geen API, en als ik het met google webdeveloper tools bekijk dan zie ik wel de Likes en Views
Dan zie je alles uit de gegenereerde DOM, zoals de browser het inleesten opbouwt.
Niet de DOM uit de source.
Je kan de makers eens vragen of ze een API hebben. Nee heb je, ja kan je krijgen.
Niet de DOM uit de source.
Je kan de makers eens vragen of ze een API hebben. Nee heb je, ja kan je krijgen.
Gewijzigd op 06/08/2023 20:39:34 door - Ariën -
Bedankt voor je uitleg, er is geen API, ik had gehoopt dat er een andere oplossing zou zijn.
Dit kan je doen d.m.v. https://github.com/chrome-php/chrome
Gewijzigd op 06/08/2023 23:21:57 door Marthijn Buijs
Als je via "inspect" kijkt welke url's er nog via Ajax aangeroepen worden, dan staat daar
https://api.starmakerstudios.com/web/comment/comments?time=1691393707233&sm_id=4444750716
tussen.
Dat geeft een berg JSON terug, waarbij num_likes lijkt te bevatten wat je zoekt.
Maar https://api.starmakerstudios.com/web/sm/share/detail?time=1691393706802&recording_id=7881299415089640&from_sid=62094808960
zou ook je info kunnen bevatten
https://api.starmakerstudios.com/web/comment/comments?time=1691393707233&sm_id=4444750716
tussen.
Dat geeft een berg JSON terug, waarbij num_likes lijkt te bevatten wat je zoekt.
Maar https://api.starmakerstudios.com/web/sm/share/detail?time=1691393706802&recording_id=7881299415089640&from_sid=62094808960
zou ook je info kunnen bevatten
Ivo P op 07/08/2023 09:41:15:
Inderdaad daar staat het tussen, nu nog die hele berg uitlezen en de juiste info terug krijgen :)Maar https://api.starmakerstudios.com/web/sm/share/detail?time=1691393706802&recording_id=7881299415089640&from_sid=62094808960
zou ook je info kunnen bevatten
zou ook je info kunnen bevatten
Bedankt !!
tip: gebruik daar json-decode functies van PHP voor.
(even om te voorkomen dat je met strpos() en substr() aan de slag gaat)
(even om te voorkomen dat je met strpos() en substr() aan de slag gaat)
Die JSON was mij nog niet opgevallen. Goed gezien Ivo.
@GP: Onthoud wel dat dit een ongedocumenteerde API is. Mocht het aangepast worden, dan ben je zelf verantwoordelijk.
@GP: Onthoud wel dat dit een ongedocumenteerde API is. Mocht het aangepast worden, dan ben je zelf verantwoordelijk.
Ivo P op 07/08/2023 12:29:40:
Dat heb ik gebruikttip: gebruik daar json-decode functies van PHP voor.
(even om te voorkomen dat je met strpos() en substr() aan de slag gaat)
(even om te voorkomen dat je met strpos() en substr() aan de slag gaat)
- Ariën - op 07/08/2023 13:03:01:
Geen probleem, komt helemaal goed.@GP: Onthoud wel dat dit een ongedocumenteerde API is. Mocht het aangepast worden, dan ben je zelf verantwoordelijk.
Bedankt ! Ik ben heel goed geholpen, een bank vooruit en een kus van de leraar :)
G P op 07/08/2023 14:03:05:
Bedankt ! Ik ben heel goed geholpen, een bank vooruit en een kus van de leraar :)
Graag gedaan... :-)
Eerste waar ik aan dacht.. :P
Gewijzigd op 07/08/2023 14:06:40 door - Ariën -




