如何使用关键词搜索Bing的图像?
我可以使用以下方式搜索Google:
import urllib2
import json
credentialGoogle = '' # Google credentials from: https://console.developers.google.com/
searchString = 'Xbox%20One'
top = 20
offset = 0
while offset < top:
url = 'https://ajax.googleapis.com/ajax/services/search/images?' + \
'v=1.0&q=%s&start=%d&userip=%s' % (searchString, offset, credentialGoogle)
request = urllib2.Request(url)
response = urllib2.urlopen(request)
results = json.load(response)
# process results
offset += 4 # since Google API only returns 4 search results at a time
Bing的等价物是什么?据推测,它始于:
keyBing = '' # Bing key from: https://datamarket.azure.com/account/keys
credentialBing = '' # same as key?
searchString = '%27Xbox+One%27'
top = 20
offset = 0
url = 'https://api.datamarket.azure.com/Bing/Search/Image?' + \
'Query=%s&$top=%d&$skip=%d&$format=json' % (searchString, top, offset)
但是如何设置凭证?
答案 0 :(得分:4)
Bing的等价物是:
keyBing = '' # get Bing key from: https://datamarket.azure.com/account/keys
credentialBing = 'Basic ' + (':%s' % keyBing).encode('base64')[:-1] # the "-1" is to remove the trailing "\n" which encode adds
searchString = '%27Xbox+One%27'
top = 20
offset = 0
url = 'https://api.datamarket.azure.com/Bing/Search/Image?' + \
'Query=%s&$top=%d&$skip=%d&$format=json' % (searchString, top, offset)
request = urllib2.Request(url)
request.add_header('Authorization', credentialBing)
requestOpener = urllib2.build_opener()
response = requestOpener.open(request)
results = json.load(response)
# process results
解决方案感谢:http://www.guguncube.com/2771/python-using-the-bing-search-api
答案 1 :(得分:2)
在Python 3.0+中,它看起来像:
from urllib.parse import quote_plus
import json
import requests
def bing_search(query):
# Your base API URL; change "Image" to "Web" for web results.
url = "https://api.datamarket.azure.com/Bing/Search/v1/Image"
# Query parameters. Don't try using urlencode here.
# Don't ask why, but Bing needs the "$" in front of its parameters.
# The '$top' parameter limits the number of search results.
url += "?$format=json&$top=10&Query=%27{}%27".format(quote_plus(query))
# You can get your primary account key at https://datamarket.azure.com/account
r = requests.get(url, auth=("","YOUR_AZURE_API_PRIMARY_ACCOUNT_KEY"))
resp = json.loads(r.text)
return(resp)
这是基于我的网络搜索功能here。
答案 2 :(得分:2)
有一个名为PyBingSearch的python包(好吧我承认,我写了一大块的包)。
安装:
pip install py-bing-search
在Python 2。*。*:
中from py_bing_search import PyBingImageSearch
bing_image = PyBingImageSearch('Your-Api-Key-Here', "x-box console")
first_fifty_results = bing_image.search(limit=50, format='json') #1-50
print (first_fifty_results[0].media_url)
您需要从Bing获取API密钥(免费最多5k /月)。该软件包允许您搜索Web,图像,视频和新闻。
现在适用于Python3。*,只需安装:
pip3 install py-bing-search
现在有一个新的Microsoft Cognitive Service接管了旧的API。可以帮助你的新python包是PyMsCognitive。
答案 3 :(得分:1)
Bing等效于python 3:
import http.client, urllib.request, urllib.parse, urllib.error, base64
headers = {
# Request headers
'Ocp-Apim-Subscription-Key': '{subscription key}',
}
params = urllib.parse.urlencode({
# Request parameters
'q': 'bill gates',
'count': '10',
'offset': '0',
'mkt': 'en-us',
'safesearch': 'Moderate',
})
try:
conn = http.client.HTTPSConnection('api.cognitive.microsoft.com')
conn.request("GET", "/bing/v5.0/search?%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
可以找到订阅密钥here