web-dev-qa-db-ja.com

Duckduckgo APIが検索結果を取得

私がやりたいのは、文字列クエリ(検索バーに手動で入力するのと同じ)を送信し、最初の結果のURL(ある場合)を保存することです。

私は同様の質問( Python検索スクレイピング )を尋ねましたが、それに対する答えはGoogleでうまく機能します私の問題は、Duckduckgoの検索APIアドレスがどこにも見つからないということです。私を助けたり、これを行う他の方法を提案してもらえますか?

17
Nesa

tl; dr-スクリーンスクレイプ https://duckduckgo.com/html/?q= {search_terms}

他の回答者が述べたように、DuckDuckGoのAPIのURLは

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

xは、探している検索用語です。

ただし、、これは完全な検索APIではないことに注意してください。 DuckDuckGoのAPIページ 言及として、

ただし、このAPIにはすべてのリンクが含まれているわけではありません。つまり、完全な検索結果APIでもなく、DuckDuckGoの結果をすぐに答えを超えてアプリケーションに取り込む方法でもありません。 検索結果を生成する という方法のため、残念ながら、結果を完全に配信する権利はありません。同じ理由で、ブランディングなしでは結果をフレーミングできません。 パートナーシップページ を参照して、ガイドラインの詳細と連絡をください。

これはインスタントアンサーAPIであり、完全な結果APIではありません。ただし、その中にはいくつかのWebリンクがあります。公式サイト。

だからあなたの述べられた目的のために

文字列クエリを送信するだけで(手動で検索バーに入力するのと同じ)、最初の結果のURL(ある場合)を保存します。

api.duckduckgo.comは、あなたが望むものをあなたに届けません。

あなたの最善の策は、おそらく非JSS、WebバージョンのDuckDuckGoをスクリーンスクレイピングすることです。

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

div.resultdiv.web-resultなどのセレクターを持つ要素を探します。

39
ethanbustad

検索したいものに変更するだけです。これにより、結果がJSONで出力されます

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

これがあなたが求めていることだと思う

2
Steve

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

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

応答はJSONオブジェクトです。最初のリンクのアドレスを見つけることができます。

response.Results[0].FirstURL

それを見つけるには、応答を https://jsonformatter.curiousconcept.com/ に入れます。

それが助けたことを願っています:)

1
Simon Meusel