34

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

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

4

3 に答える 3

67

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 の結果をアプリケーションに取得する方法でもありません。検索結果の生成方法が原因で、残念ながら結果を完全にシンジケートする権利はありません。同じ理由で、ブランディングなしで結果をフレーミングすることはできません。ガイドラインの詳細と連絡先については、パートナーシップのページをご覧ください

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

したがって、あなたが述べた目的のために

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

api.duckduckgo.com では、あなたが望むものは得られません。

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

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

div.resultまたはのようなセレクターを持つ要素を探しdiv.web-resultます。

于 2016-08-16T00:31:02.020 に答える
1

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

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

これがあなたが求めているものだと思います

于 2016-05-03T19:21:10.427 に答える
0

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/に入れることでそれを見つけることができます

それが役に立ったことを願っています:)

于 2016-05-03T19:21:27.393 に答える