python 爬取图片下载在本地
需要python环境,然后复制下面的代码
需要下载拓展:pip install hashlib 和 fake_useragent
运行
python3 pyimg.py
import json import os.path from hashlib import sha1 import requests from fake_useragent import UserAgent class BaiduPchongImg: def __init__(self) -> None: self.param = "?tn=resultjson_com&logid=11037441803473987554&ipn=rj&ct=201326592&is=&fp=result&fr=&word=%E5%9B%BE%E7%89%87&queryWord=%E5%9B%BE%E7%89%87&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=©right=&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=1&expermode=&nojc=&isAsync=&pn={}&rn=30&gsm=5a&1687744811367=" self.url = "https://image.baidu.com/search/acjson" self.header = { 'User-Agent' : UserAgent().random } #加密图片文件名 def sha1(self,href): s = sha1() s.update(href.encode()) return s.hexdigest() #获取链接的json数据然后循环赋值给下载的函数 def _html(self,url): content = requests.get(url,headers=self.header).text #获取url路径文本内容 img_json = json.loads(content)#解析返回dirt for href in img_json['data']: try: img_href = href['thumbURL'] # print(href) self.img_info(img_href)#读取到图片的路径然后解析里内容写入文件里 except KeyError: pass #下载图片在本地 def img_info(self,href): img_content = requests.get(href,headers=self.header).content#读取图片内容 file_name = self.sha1(href) #加密文件名 file = "D:\学习\项目\python项目\pachong\img\\" #下载到指定路径 file_url = file+file_name+".jpg" #绝对的文件路径 #验证是否存在文件夹,不存在就创建 if not os.path.exists(file): os.mkdir(file) #保存图片 with open(file_url,'wb') as f: f.write(img_content) #with 打开文件之后执行完自动执行close函数,所有不需要手动关闭 print(file_url) def _url(self,num): if num>0: #默认是30条,一次30张,输入几就是30*i,比如30*3就是90条 i = num*30 url = self.url+self.param.format(i) self._html(url) if __name__ == '__main__' : #print(UserAgent().random) #pass #exit() baidu = BaiduPchongImg() baidu._url(1)