Я реплицирую результаты кода в этом ответе: R: Как использовать поиск в Интернете на бесплатном уровне Bing с помощью R, но с тех пор, как был дан этот ответ, Bing API был обновлен.
Я могу воспроизвести результаты примера, приведенного на веб-сайте Microsoft, на Python, но не могу перевести это на R.
Это пример Python (который работает)
import http.client
import urllib.parse
import json
subscriptionKey = 'xxxxxxxxxxx'
host = 'api.bing.microsoft.com'
path = '/v7.0/entities'
mkt = 'en-US'
query = 'Wallmart'
params = '?mkt=' + mkt + '&q=' + urllib.parse.quote (query)
def get_suggestions ():
headers = {'Ocp-Apim-Subscription-Key': subscriptionKey}
conn = http.client.HTTPSConnection (host)
conn.request ("GET", path + params, None, headers)
response = conn.getresponse ()
return response.read()
result = get_suggestions ()
print (json.dumps(json.loads(result), indent=4))
Вот как я смог получить тот же результат в R
library(httr)
server = "api.bing.microsoft.com"
path = '/v7.0/entities'
token = "xxxxxxx"
mkt = "en-US"
query = "Wallmart"
params = paste0("?mkt=", mkt, "&q=", query)
url = paste0(server,path,"search")
response = GET(url = url,
query = list(q = params),
add_headers(`Ocp-Apim-Subscription-Key` = token)
)
Это просто дает мне ошибку: Error in curl::curl_fetch_memory(url, handle = handle) : Protocol "" not supported or disabled in libcurl
Другие базовые GET()
команды, как описано здесь: https://cran.r-project.org/web/packages/httr/vignettes/quickstart.html работают.
ОТВЕЧАТЬ
Хорошо, я немного поспешил с вопросом. Я получил ответ: 1) используя предложение Мориса и 2) изменив запрос.
library(httr)
server = "https://api.bing.microsoft.com"
path = '/v7.0/entities/'
token = "xxxxxxx"
mkt = "en-US"
query = "Wallmart"
url = paste0(server,path)
response = GET(url = url,
query = list(mkt = mkt,
q = query),
add_headers(`Ocp-Apim-Subscription-Key` = token)
)
res = content(response, encoding = "json")
res
https://api.bing.microsoft.com
- person Maurice Meyer   schedule 22.06.2021