私がやりたいことは、文字列クエリを送信し (検索バーに手で入力するのと同じです)、最初の結果の URL を保存することです (存在する場合)。
同様の質問 ( Python 検索スクレイピング) を尋ねましたが、それに対する答えは Google でうまく機能します。私の問題は、Duckduckgo の検索 API アドレスがどこにも見つからないことです。私を助けてくれるか、これを行う別の方法を提案してもらえますか?
私がやりたいことは、文字列クエリを送信し (検索バーに手で入力するのと同じです)、最初の結果の URL を保存することです (存在する場合)。
同様の質問 ( Python 検索スクレイピング) を尋ねましたが、それに対する答えは Google でうまく機能します。私の問題は、Duckduckgo の検索 API アドレスがどこにも見つからないことです。私を助けてくれるか、これを行う別の方法を提案してもらえますか?
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
ます。
検索したいものに変更するだけです。これにより、JSON で結果が出力されます
https://api.duckduckgo.com/?q=<your search string>&format=json&pretty=1&no_html=1&skip_disambig=1
これがあなたが求めているものだと思います
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/に入れることでそれを見つけることができます
それが役に立ったことを願っています:)