requests爬取百度图片示例
前言:
在我们学习机器学习的时候,苦苦没有训练集,那么只有创造训练集,这里我参考了网上许多方法,发现requests真的是方便明了,这里向大家介绍一种方式!requests的get方法!当然还有post方法,附上一个链接供大家学习:点击打开链接
直接上代码:
import requestsfrom 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'
};
'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 ;
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 ) #传入请求参数
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)
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!')
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) #这里可以方便的下载指定的页数
Search('老虎','data/bibi',i) #这里可以方便的下载指定的页数
这是下载的样子:
这是文件夹中的图片:
有了这种方法,获取大量数据资源不是问题!!
欢迎大家指点! ;)