私がやりたいのは、文字列クエリ(検索バーに手動で入力するのと同じ)を送信し、最初の結果の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の結果をすぐに答えを超えてアプリケーションに取り込む方法でもありません。 検索結果を生成する という方法のため、残念ながら、結果を完全に配信する権利はありません。同じ理由で、ブランディングなしでは結果をフレーミングできません。 パートナーシップページ を参照して、ガイドラインの詳細と連絡をください。
これはインスタントアンサーAPIであり、完全な結果APIではありません。ただし、その中にはいくつかのWebリンクがあります。公式サイト。
だからあなたの述べられた目的のために
文字列クエリを送信するだけで(手動で検索バーに入力するのと同じ)、最初の結果のURL(ある場合)を保存します。
api.duckduckgo.comは、あなたが望むものをあなたに届けません。
あなたの最善の策は、おそらく非JSS、WebバージョンのDuckDuckGoをスクリーンスクレイピングすることです。
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/ に入れます。
それが助けたことを願っています:)