今天来和大家分享下,如何通过
一、开发环境
开发环境:python 3.9和sublime_text
ps:pycharm今天第一次用,随着将越来越多开发环境集成到vscode上,感觉太复杂了,配置又不太懂,总是有问题,虽然很喜欢vscode的自由度,但不想折腾了,简单的开发环境更重要!
二、第三方库
requests
os
(time)
三、步骤
步骤1:导入requests模块
步骤2:添加url
步骤3:查看百度图片时,浏览器用到Ajax请求,所以url是变化的
步骤4:get请求url,包括url、headers、请求数据。
步骤5:创建新文件夹接收响应
四、代码
只能一次爬取前30张,因为没改params['pn']。
如果想爬取更多的话就for循环,请求Ajax:
然后遍历urls列表,请求得到urls中每个值的json数据,最后得到所有图片的url,请求这些保存到文件夹。
import requests import os def getPages():#只能得到30张图片,想得到更多图片,需要变化params['pn']的值。headers={'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36 Edg/103.0.1264.77"}url='https://image.baidu.com/search/acjson'#追加请求内容(负载)params={'tn':'resultjson_com','logid':'5336511566462226640','ipn':'rj','ct':'201326592','is':' ','fp':'result','fr':' ','word':'荷兰猪','cg':'girl','queryWord':'荷兰猪','cl':'2','lm':'-1','ie':'utf-8','oe':'utf-8','adpicid':' ','st':' ','z':' ','ic':' ','hd':' ','latest':' ','copyright':' ','s':' ','se':' ','tab':' ','width':' ','height':' ','face':' ','istype':' ','qc':' ','nc':'1','expermode':' ','nojc':' ','isAsync':' ','pn':'30','rn':'30','gsm':'1e','1660570401395':' '} res=requests.get(url=url,headers=headers,params=params)# print(res.json())data=res.json()['data']# print(data)#得到所有图片地址urlPages=[]for i in data:if i.get('thumbURL') !=None: urlPages.append(i['thumbURL'])# print(urlPages) #检测文件夹是否存在dir='./baidu'if not os.path.exists(dir):os.mkdir(dir)#创建目录方法#向每个图片url发起请求x=0for o in urlPages:print('下载成功')res=requests.get(url=o,headers=headers)#下载到dir文件夹open(f'{dir}/{x}.jpg','wb').write(res.content)x+=1 getPages()