Vreau să scriu o funcție care numără de câte ori un articol a fost shareuit pe Google Plus (nu +1) . Pentru a scrie funcția mă folosesc doar de PHP, fără alte dependințe deoarece aceasta va fi inclusă într-un script care este rulat cu un cronjob, zilnic, pe un site de Wordpress.
Rezultatul ar trebui să fie >=1 deoarece am shareuit linkul și la mine pe profil. Nu-mi dau seama ce fac greșit. Am incercat și cu curl dar fără succes.
E mult mai complicat sa accesezi o pagina web si sa o scrape-uiesti decat un simplu GET, mai ales una atat de dinamica cum este cea de Google Plus.
In principiu o sa primesti inapoi o pagina web initiala, dar care trebuie executata pentru a obtine exact ce vrei. Sunt multe scripturi care ruleaza pe pagina, multe date care mai trebuiesc fetch-uite etc. Chiar daca pagina e randata de catre Google intr-o oarecare masura, pentru performanta, nu o sa fie “gata” doar dupa un GET.
Apoi, un simplu request n-o sa contina toate datele necesare. De exemplu un “http gethttps://plus.google.com” din linia de comanda intoarce 302 Not Found. Requestul nu arata ca unul normal dintr-un browser, asa ca Google il respinge. Nu stiu cum merge file_get_contents, dar presupun ca nu e facut pentru scraping dásta.
O prima solutie e sa incarci pagina intr-un headless browser, si sa scrape-uiesti prin el. Sunt framework-uri pentru testare de apllcatii web precum selenium care ajuta cu treaba asta, oferindu-ti un API de interactiune cu pagina. Dar e o dependinta destul de mare, avand in vedere constrangerile pe care le-ai dat mai sus.
O a doua solutie e sa vezi de vre-un API al Google pentru a afla informatia asta. Sigur trebuie sa fie ceva pe partea de analytics. Un API general exista. Dar e un dans mai complicat.