如何在 Bing 网络搜索 API 结果中排除特定网站?

How to exclude particular websites in Bing Web Search API result?

我正在使用 Bing 网络搜索 API 在 Bing.com 中搜索一些信息。但是,对于某些搜索查询,我从搜索中获取的网站与我的目的无关。

例如,如果搜索查询是 今年夏天要读的书,有时 Bing returns youtube.comamazon.com因此。但是,我不想在我的搜索结果中出现这些类型的网站。所以,我想在搜索开始之前屏蔽这类网站。

这是我的示例代码:

    params = {
        "mkt": "en-US",
        "setLang": "en-US",
        "textDecorations": False,
        "textFormat": "raw",
        "responseFilter": "Webpages",
        "q": "books to read this summer",
        "count": 20
    }

    headers = {
        "Ocp-Apim-Subscription-Key": MY_APY_KEY_HERE,
        "Accept": "application/json",
        "Retry-After": "1",
    }


    response = requests.get(WEB_SEARCH, headers=headers, params=params, timeout=15)

    response.raise_for_status()

    search_data = response.json()

search_data 变量包含我想在不迭代响应对象的情况下阻止的链接。特别是,我希望 Bing 不要在结果中包含 youtube 和 amazon。

我们将不胜感激。

已编辑:WEB_SEARCH 是网络搜索端点

在挖掘 Bing 网络搜索文档后,我找到了答案。在这里。

LINKS_TO_EXCLUDE = ["-site:youtube.com", "-site:amazon.com"]


def bing_data(user_query):

    params = {
        "mkt": "en-US",
        "setLang": "en-US",
        "textDecorations": False,
        "textFormat": "raw",
        "responseFilter": "Webpages",
        "count": 30
    }

    headers = {
        "Ocp-Apim-Subscription-Key": MY_APY_KEY_HERE,
        "Accept": "application/json",
        "Retry-After": "1",
    }
    
    # This is the line what I needed to have
    params["q"] = user_query + " " + " ".join(LINKS_TO_EXCLUDE)

    response = requests.get(WEB_SEARCH_ENDPOINT, headers=headers, params=params)
    response.raise_for_status()
    search_data = response.json()

    return search_data