Belle année 2024 !
J'essaie de faire fonctionner le script Allociné.
J'ai fait déjà plusieurs modifications pour que la fonction GetPage me charge la page de résultat d'un moteur de recherche sans erreurs. Mais je ne suis pas encore satisfait.
Ce qui ne marche plus car j'obtiens l'erreur "HTTP/1.1 400 Bad Request" :
- l'utilisation de google
Ce qui ne fonctionne pas :
- l'utilisation de Qwant, j'obtiens la même erreur qu'avec Google
- avec Duckduckgo, la page récupérée ne contient pas les résultats de la recherche, donc les URL vers les fiches Allociné
Ce qui fonctionne partiellement :
- l'utilisation de Brave Search, au bout d'un moment, il me bloque me prenant pour un bot. Je suis obligé d'attendre de nombreuses minutes avant de refaire une requête.
- l'utilisation de Bing, pour l'instant. Mais je trouve la page de résultat de recherche "trop chargée".
Ma préférence irait vers l'utilisation de Duckduckgo car la page de recherche est simple et semble complète mais le code source de la page de recherche ne correspond pas exactement au résultat affiché. Après plusieurs recherches sur ce problème, il semblerait que des éléments soient générés dynamiquement grâce au navigateur ce qui rend la récupération par GetPage incomplète.
En Delphi 7, j'ai vu qu'il était possible de simuler un navigateur avec un moteur de rendu Internet Explorer utilisé par TWebBrowser. Mais IE est sans doute déjà dépassé ou risque de l'être prochainement. Existe-t-il un autre moteur de rendu sous Delphi 7 ?
Fonction GetPage, script Allociné et résultat avec un moteur de recherche
Re: Fonction GetPage, script Allociné et résultat avec un moteur de recherche
Hello,
En effet avec les pages dynamiques, tout ce qui est géré par javascript plutôt que directement dans la page n'est pas récupérable avec un simple client HTTP.
IE n'aidera probablement pas beaucoup, mais de toute façon aller embarquer un moteur de rendu semble un peu lourd pour cela.
Pour ce qui est de l'accès à Google, il faut utiliser GetPage4 qui permet de spécifier le type de contenu en 4e paramètre, où on doit passer une chaîne vide au lieu du '*/*' que AMC envoie par défaut et que Google n'aime pas.
GetPage4('https://www.google.com/search?q=test', '', '', '')
Mais ça donne juste une page où Google demande d'accepter ses cookies, ça ne sera donc pas si simple.
À voir pour Qwant mais il ne semble pas renvoyer un contenu facile à parser.
Il faudrait plutôt aller voir s'il n'y a pas des API que l'on peut appeler pour chacun des moteurs de recherche plutôt que de parser les pages "publiques".
En effet avec les pages dynamiques, tout ce qui est géré par javascript plutôt que directement dans la page n'est pas récupérable avec un simple client HTTP.
IE n'aidera probablement pas beaucoup, mais de toute façon aller embarquer un moteur de rendu semble un peu lourd pour cela.
Pour ce qui est de l'accès à Google, il faut utiliser GetPage4 qui permet de spécifier le type de contenu en 4e paramètre, où on doit passer une chaîne vide au lieu du '*/*' que AMC envoie par défaut et que Google n'aime pas.
GetPage4('https://www.google.com/search?q=test', '', '', '')
Mais ça donne juste une page où Google demande d'accepter ses cookies, ça ne sera donc pas si simple.
À voir pour Qwant mais il ne semble pas renvoyer un contenu facile à parser.
Il faudrait plutôt aller voir s'il n'y a pas des API que l'on peut appeler pour chacun des moteurs de recherche plutôt que de parser les pages "publiques".
Re: Fonction GetPage, script Allociné et résultat avec un moteur de recherche
Merci pour votre réponse rapide et complète.
Intéressant la piste des API, je n'y avais pas pensé.
Intéressant la piste des API, je n'y avais pas pensé.