Python :获取百度图片API

参考:1.http://www.myexception.cn/javascript/1467350.html

百度图片api:

http://image.baidu.com/i?tn=baiduimagejson&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1349413075627_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&word=girl&rn=2&pn=1
这个地址比较长,删除一下参数:

http://image.baidu.com/i?tn=baiduimagejson&width=&height=&word=girl&rn=10&pn=2
几个关键参数:

width&height:长宽

word:查询关键词

rn:每页显示图片数量

pn:图片显示的页码

<pre name="code" class="javascript">参考返回结果如下
{
    "queryEnc": "girl",
    "queryExt": "girl",
    "listNum": 1999,
    "displayNum": 21929725,
    "bdFmtDispNum": "约21,900,000",
    "bdSearchTime": "6.000",
    "bdIsClustered": "1",
    "data": [
        {
            "thumbURL": "http://t10.baidu.com/it/u=1025587248,1458534674&fm=59",
            "middleURL": "",
            "largeTnImageUrl": "http://t12.baidu.com/it/u=924334832,1400490131&fm=59",
            "hasLarge": 0,
            "hoverURL": "http://t11.baidu.com/it/u=1001163760,1466976252&fm=59",
            "pageNum": 1,
            "objURL": "http://www.widewallpapers.ru/mod/girls/3/1920x1200/hot-girl-wallpaper-1920x1200-008.jpg",
            "fromURL": "http://hdw.eweb4.com/out/687817.html",
            "fromURLHost": "http://hdw.eweb4.com",
            "currentIndex": "0",
            "width": 1920,
            "height": 1200,
            "type": "jpg",
            "filesize": "715",
            "bdSrcType": "5",
            "di": "0",
            "is": "0",
            "bdSetImgNum": 0,
            "bdImgnewsDate": "2013-02-01 13:22:13",
            "fromPageTitle": "<strong>girl</strong>",
            "fromPageTitleEnc": "<strong>girl</strong>",
            "bdSourceName": "",
            "bdFromPageTitlePrefix": "",
            "token": "0"
        },
        {
            "thumbURL": "http://t10.baidu.com/it/u=642396156,1965090283&fm=59",
            "middleURL": "",
            "largeTnImageUrl": "http://t10.baidu.com/it/u=636229272,1901199173&fm=59",
            "hasLarge": 0,
            "hoverURL": "http://t10.baidu.com/it/u=657566964,1952941079&fm=59",
            "pageNum": 2,
            "objURL": "http://www.mrwallpaper.com/wallpapers/blonde-girl-green-eyes-1920x1200.jpg",
            "fromURL": "http://hdw.eweb4.com/out/650129.html",
            "fromURLHost": "http://hdw.eweb4.com",
            "currentIndex": "0",
            "width": 1920,
            "height": 1200,
            "type": "jpg",
            "filesize": "436",
            "bdSrcType": "5",
            "di": "0",
            "is": "0",
            "bdSetImgNum": 0,
            "bdImgnewsDate": "2013-02-01 13:22:13",
            "fromPageTitle": "<strong>girl</strong>",
            "fromPageTitleEnc": "<strong>girl</strong>",
            "bdSourceName": "",
            "bdFromPageTitlePrefix": "",
            "token": "0"
        },
        {}
    ]
}
 
 

下面是Pyhton代码:

#get_girls_image
from urllib2 import urlopen
from json import load,dumps
import urllib,os

def main():
    url = 'http://image.baidu.com/i?'
    word = raw_input('please input a key word about image u want to search:')
    params = 'tn=baiduimagejson&width=&height=&ie=utf8&oe=utf-8&ic=0&rn=20&pn=0'+'&'+ 'word='+ word
#得到完整的地址
    url += params
#以json方式打开图片api地址
    page = urlopen(url)
    info = load(page)

    writeinfo(info)
    if 'tag1' in info:
        if 'tag2' in info:
            print info['tag1']+info['tag2']+' totalNum:' + str(info['totalNum'])
            dirname = os.getcwd()+'\\'+info['tag1']+info['tag2']+'\\'
    elif 'queryEnc' in info:
        dirname = os.getcwd()+'\\'+info['queryEnc']+'\\'
    else:
        print 'wrong input,no image'
        dirname =os.getcwd()+'\\'+'girl\\'

    imgs = getImgUrl(info)

    if not os.path.exists(dirname):
        os.mkdir(dirname)
    for k,v in imgs.iteritems():
        print k,v
        downloadImg(v,dirname+k)

#把地址信息写入文件
def writeinfo(dat):
    ff = open('image_info_temp.json','w')
    ff.write(dumps(dat,indent=4))
    ff.close()

#获取图片地址
def getImgUrl(dat):
    kandv = []
    idnum,imgurl = [],[]
    #dat is json format
    if 'data' in dat:
        temp =dat['data']
    elif 'imgs' in dat:
        temp =dat['imgs']

    for dd in temp:
        if 'image_url' in dd:
            #print 'image_url: ' + dd['image_url'] + '\n'
            imgurl.append(dd['image_url'])
            idnum.append(os.path.split(dd['image_url'])[1])
        elif 'objURL' in dd:
            imgurl.append(dd['objURL'])
            idnum.append(os.path.split(dd['objURL'])[1])
    kandv = zip(idnum,imgurl)
    return dict(kandv)

#下载图片
def downloadImg(url0,name0):
    urllib.urlretrieve(url0,'%s.jpg'%name0)

if __name__ == '__main__':
    main()


猜你喜欢

转载自blog.csdn.net/viomag/article/details/38340993