您的位置:首页 > 编程语言 > Python开发

利用Bing Search API进行搜索

2014-12-02 11:05 387 查看
0X01 

Bing的搜索接口又原来的免费版改成现在的收费版。新版申请帐号后每个月有5000条的免费搜索次数,注册连接https://datamarket.azure.com/browse/data?price=free&sort=name,找到如下两个应用



0X02 

申请好后,得到系统分配的key,接下来看下怎么利用。

微软给我们提供的接口如下:https:// api.datamarket.azure.com/Bing/Search/Web?'+
urllib.urlencode(payload)

在发送请求的时候要把Authorization和user-agent加上,格式为:

    headers = { }  

    headers['Authorization']= 'Basic '+base64.b64encode(':'+AccountKey)   #Basic后有一个空格

    headers['user_agent'] = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322)'

payload中要包含几个字段:

$format  决定了返回的格式样式,是Atom(xml)还是json,默认是Atom

$top     决定了每一次返回的结果个数 (默认是50条)。  

$skip    决定了返回的起始数字,类似与数据库分页的start

Query    就是实际要查询的内容,特别要注意,这里的查询语句需要用两个单引  号括起来,不然会报错注意要url编码下

官方给出了详细的接口文档 https://onedrive.live.com/view.aspx?resid=9C9479871FBFA822!112&app=Word&authkey=!ANNnJQREB0kDC04 

0X03

我们将$format的值设为json,返回的结果保存到文件中,看下数据格式



这里需要注意的是,如果你的python代码的编码格式用的不是UTF-8的话,在读取bing返回结果的时候需要进行转码,关于json转码问题可以参考
http://stackoverflow.com/questions/13940272/python-json-loads-returns-items-prefixing-with-u https://developer.decibel.net/sample-code-rest-python
0X04

最后对返回的json串进行解析就行了

result_list = data['d']['results'] 

for i in result_list:

print i['Url']
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python bing search api 利用