web-dev-qa-db-fra.com

API Duckduckgo obtenant des résultats de recherche

Ce que je veux faire, c'est simplement soumettre des requêtes de chaîne (l'équivalent de taper dans la barre de recherche à la main) et enregistrer l'URL des premiers résultats (le cas échéant).

J'ai posé une question similaire ( grattage de recherche Python ) et la réponse à cela fonctionne bien avec google mon problème est que je ne trouve nulle part l'adresse de l'API de recherche de Duckduckgo. Pourriez-vous m'aider ou suggérer une autre façon de procéder?

17
Nesa

tl; dr - Grattage d'écran https://duckduckgo.com/html/?q= {search_terms}

Comme d'autres intervenants l'ont mentionné, l'URL de l'API de DuckDuckGo est

http://api.duckduckgo.com/?q=x&format=json

x étant les termes de recherche que vous recherchez.

Cependant , veuillez noter qu'il ne s'agit pas d'une API de recherche complète . Comme page API de DuckDuckGo mentionne,

Cette API ne comprend cependant pas tous nos liens. Autrement dit, il ne s'agit pas d'une API de résultats de recherche complète ou d'un moyen d'obtenir des résultats DuckDuckGo dans vos applications au-delà de nos réponses instantanées. En raison de la façon dont nous générons nos résultats de recherche , nous n'avons malheureusement pas le droit de syndiquer pleinement nos résultats. Pour la même raison, nous ne pouvons pas permettre de cadrer nos résultats sans notre image de marque. Veuillez consulter notre page sur les partenariats pour plus d'informations sur les directives et pour nous contacter.

Il s'agit d'une API de réponse instantanée et non d'une API de résultats complets. Cependant, il contient des liens Web, par exemple sites officiels.

Donc, pour votre objectif déclaré de

il suffit de soumettre des requêtes de chaîne (l'équivalent de taper à la main dans la barre de recherche) et d'enregistrer l'URL des premiers résultats (le cas échéant).

api.duckduckgo.com ne vous obtiendra pas ce que vous voulez.

Votre meilleur pari est probablement de simplement gratter la version Web non JS de DuckDuckGo:

https://duckduckgo.com/html/?q=x

la recherche d'éléments avec un sélecteur de quelque chose comme div.result ou div.web-result.

39
ethanbustad

changez simplement avec ce que vous voulez rechercher. Cela produira les résultats en JSON

https://api.duckduckgo.com/?q=<your search string>&format=json&pretty=1&no_html=1&skip_disambig=1

Je pense que c'est ce que vous demandez

2
Steve

www.api.duckduckgo.com/?q=Search&format=json&pretty=1

Exemple: http://api.duckduckgo.com/?q=DuckDuckGo&format=json&pretty=1

La réponse est un objet JSON, vous pouvez trouver l'adresse du premier lien:

response.Results[0].FirstURL

Vous pouvez le découvrir en mettant la réponse dans https://jsonformatter.curiousconcept.com/

J'espère que cela a aidé :)

1
Simon Meusel