php een JQUERY website laten opvragen.
Ik heb jarenlang vaak voor het plezier websites gemaakt. Na al een jaar of 2 niet meer geprogrammeerd te hebben, heb ik weer een leuk projectje bedacht. Echter wil deze maar niet lukken. Ik heb een website gevonden die producten aanbied. Op deze website worden verschillende producten aangeboden die op de website worden getoond. Ook is een filter menu aanwezig die na dat de pagina geladen word de producten filtert. Om een lang verhaal kort te maken: De gene die het eerst reageert kan meestal het product krijgen. Hierom wou ik een klein script bouwen (JQUERY/JS of php) die mij een melding stuurt als er een nieuw product op de website verschijnt. Hier beginnen de problemen. Als ik op volgende wijze de pagina wil opvragen via JQUERY krijg ik de melding Access denied:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$.get('www.DE_WEBSITE_URL_Hier#filter:eyJmaWx0ZXJzW3R5cGVdW10iOiJyZW50LWRpcmVjdCJ9').then(function (html)
{
var $mainbar = $(html).find('.filter-result');
}, function () {
// Error response
document.write('Access denied 1');
});
{
var $mainbar = $(html).find('.filter-result');
}, function () {
// Error response
document.write('Access denied 1');
});
Hier is waarschijnlijk niks aan te doen omdat ik DENK dat de server requests van JQUERY blokkeert.
Een andere manier is om het via PHP te doen maar ook hier loop ik tegen een probleem aan.
Het filteren van de producten gebeurt via jquery pas na het laden van de website. Ik heb een script geschreven die de resultaten filtert. Ik roep de pagina via de volgende manier op:
Het filteren van de resultaten werkte perfect totdat ik me zonet ineens realiseerde dat het filteren van de resultaten alleen maar voor de eerste 10 producten werkt. Dit omdat er meerdere pagina's zijn. (10 resultaten per pagina). En php bij het laden van de pagina dus mij alleen de eerste 10 resultaten geeft...
Heeft iemand een oplossing of tips hoe ik 1 van deze problemen kan tackelen.
Alvast bedankt voor de moeite.
En haal je dit bij een andere site vandaan?
Het JQUERY scriptje heb ik inderdaad van een andere website gehaald. Ik programmeer op een een ubuntu laptop met Apache2 geinstalleerd.
Dit is de foutmelding die ik via Developer tools binnen krijg.
Code (php)
1
Access to XMLHttpRequest at 'https://....../ik-zoek/ons-aanbod#filter:eyJmaWx0ZXJzW3R5cGVdW10iOiJyZW50LWRpcmVjdCJ9' from origin 'http://localhost' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Hierom denk ik dat de website een blokkade heeft op jquery requests.
Maar er is inderdaad een blokkade, en het is niet de bedoeling dat je die omzeilt. Het zou in bepaalde gevallen zelfs een leuke claim kunnen opleveren.
Mijn beste advies is om de beheerder van de site te vragen of die een API beschikbaar heeft.
Gewijzigd op 16/07/2019 17:07:27 door - Ariën -
Maar het is dus niet mogelijk om met behulp van PHP de website zo op te vragen dat jquery eerst wordt uitgevoerd?
Nee, want dat is clientside.
Maar onthoud dat je je inderdaad wel een beetje op glad ijs begeeft als je op deze manier een "website opvraagt".
ja ik weet dat ik me op glad ijs begeef daarom heb ik de url niet openbaar neergezet. Maar nu hoor ik van veel mensen dat iedereen de website zit te vernieuwen en te vernieuwen totdat er een niet product op komt. Ik wil dat proces automatiseren maar het is veel lastiger als ik gedacht heb...
Het is overigens alleen voor prive gebruik.
Zie ook deze link:
https://i.ibb.co/YPSk8w7/googleblogpost-1024x465.png
Elke site heeft vaak tientallen requests, en daarvan pik je dan vaak de JSON of XML op die verantwoordelijk zijn voor voor de asynchrone data.
Gewijzigd op 16/07/2019 21:53:11 door - Ariën -
inderdaad er komt een Ajaxsearch binnen met de benodigde informatie. Als ik deze URL nu elke 5 seconde zou herladen zou het mogelijk moeten zijn om te controleren of er een nieuw product op de site komt. Ik denk echt dat ik het mee verder kan. Bedankt voor de hulp!
Maar communiceer ook scraper-acties met de eigenaar. Dat kan een hoop ellende voorkomen. Met een request die elke 5 seconde plaatsvindt zullen er vast wel belletjes gaan rinkelen.
Je hebt gelijk. Ik heb er nog niet eens zo over nagedacht maar een Linux computer met VPN die elke paar seconden een Ajax search uitvoert komt inderdaad wat raar over. Ik zal een duidelijke mail sturen met vragen en uitleg voordat ik met het script begin. Bedankt voor de snelle reacties en tips!