requests爬取百度图片示例

前言:
       在我们学习机器学习的时候,苦苦没有训练集,那么只有创造训练集,这里我参考了网上许多方法,发现requests真的是方便明了,这里向大家介绍一种方式!requests的get方法!当然还有post方法,附上一个链接供大家学习: 点击打开链接

直接上代码:
import requests

from urllib.request import urlretrieve
import os

#这里我们使用requests的get方式,以下的参数,来自于

其中的 word  指的是关键字, pn 指的是第几页图片,  rn 值得是每页有30张图片,

def Search(name,localpath,page):
    os.makedirs(localpath, exist_ok=True)  #这里创建文件夹路径, exist_ok=True 指如果有就不创建
    params = {
        'tn':'resultjson_com',
        'catename':'pcindexhot',
        'ipn':'rj',
        'ct':'201326592',
        'is':'',
        'fp':'result',
        'queryWord':'',
        'cl':'2',
        'lm':'-1',
        'ie':'utf-8',
        'oe':'utf-8',
        'adpicid':'',
        'st':'-1',
        'z':'',
        'ic':'0',
        'word':name,
        'face':'0',
        'istype':'2',
        'qc':'',
        'nc':'1',
        'fr':'',
        'pn':'0',
        'rn':'30'
        };
    params['pn'] = '%d' % page
    Request(params,localpath)
    return ;

#这里我们请求数据,数据类型是imgs,我们对于其中的key不了解,可以 print( response.json().keys()),就能发现
这里我们需要的是imgs, 同理json[i]['objURL']   中objURL就是值得是路径,我们下载的时候也是依据他

def Request(param,path):

    searchurl  = 'http://image.baidu.com/search/avatarjson'   #百度图片
    response = requests.get(searchurl,params =param )         #传入请求参数
    json  = response.json()['imgs']    #每张图片有自己的下载路径
    for i in range(0,len(json)):
        filename = os.path.split(json[i]['objURL'])[1]
        Download(json[i]['objURL'],filename,path)

#这里进行下载

def Download(url,filename,filepath):
    path = os.path.join(filepath,filename)      #这里我们还是采用原来的图片
    try:                                                 #有些图片不知道为什么下载不了,所以这里用了try的方式
        urlretrieve(url,path)
        print('Downloading Images From ', url)
    except:
        print('Downloading None Images!')

#下载的主函数
if __name__ =='__main__':
    for i in range(20,21):
      Search('老虎','data/bibi',i)    #这里可以方便的下载指定的页数


有图有真相:
这是下载的样子:

这是文件夹中的图片:

有了这种方法,获取大量数据资源不是问题!!
欢迎大家指点!   ;)

猜你喜欢

转载自blog.csdn.net/qq_37389133/article/details/79327948