php een JQUERY website laten opvragen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Christian k

christian k

16/07/2019 16:51:06
Quote Anchor link
Goedemiddag iedereen,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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');
});


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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$content = file_get_contents($url);


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.
 
PHP hulp

PHP hulp

18/08/2019 11:58:03
 
- Ariën -
Beheerder

- Ariën -

16/07/2019 16:55:06
Quote Anchor link
Wat voor request krijg je terug in je network-tab van je Developer tools?
En haal je dit bij een andere site vandaan?
 
Christian k

christian k

16/07/2019 17:01:35
Quote Anchor link
Bedankt voor de snelle reactie.

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)
PHP script in nieuw venster Selecteer het PHP script
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.
 
- Ariën -
Beheerder

- Ariën -

16/07/2019 17:07:07
Quote Anchor link
jQuery requests bestaan niet, AJAX requests wel ;-)

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 -
 
Christian k

christian k

16/07/2019 17:36:56
Quote Anchor link
Ik heb de beheerder een mailtje gestuurd.
Maar het is dus niet mogelijk om met behulp van PHP de website zo op te vragen dat jquery eerst wordt uitgevoerd?
 
- Ariën -
Beheerder

- Ariën -

16/07/2019 17:38:34
Quote Anchor link
Nee, want dat is clientside.
 
Rob Doemaarwat

Rob Doemaarwat

16/07/2019 19:05:01
Quote Anchor link
Je zou even in de console van www.DE_WEBSITE_URL_Hier kunnen kijken wat er aan asynchrone requests voorbij komt. Waarschijnlijk komt de door jou gewenste data hier netjes als een stukje JSON/XML voorbij.

Maar onthoud dat je je inderdaad wel een beetje op glad ijs begeeft als je op deze manier een "website opvraagt".
 
Christian k

christian k

16/07/2019 20:57:56
Quote Anchor link
Ik heb van alles geprobeerd met de console ernaast. Elke filter die ik aanklik zorgt ervoor dat er div's verwijderd worden en nieuwe toegevoegd. Maar de console zelf blijft leeg. Dus ergens moeten alle div's opgeslagen zijn maar ik kan het nergens vinden tussen alle code.

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.
 
- Ariën -
Beheerder

- Ariën -

16/07/2019 21:26:43
Quote Anchor link
Je hoeft geen div'jes te bestuderen, alleen de network-tab te bekijken op de network-request.

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 -
 
Christian k

christian k

17/07/2019 13:06:16
Quote Anchor link
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!
 
- Ariën -
Beheerder

- Ariën -

17/07/2019 13:14:56
Quote Anchor link
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.
 
Christian k

christian k

17/07/2019 13:23:48
Quote Anchor link
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!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.