|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import requests
- import re
- import os
- from concurrent.futures import ThreadPoolExecutor
- class GetImages:
- middle = []
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'
- }
- inp = None
- num = None
- url = 'https://image.baidu.com/search/acjson'
- #初始化数据
- def __init__(self):
- self.inp = input('请输入搜索的名称:')
- self.num = int(input('请输入要下载的页数(30为1页):'))
- if self.findurl():
- self.thread()
- print(f'文件存放在当前路径下 "{self.inp}" 文件夹内')
- #获取图片链接
- def findurl(self):
- for i in range(30, 30 * self.num + 1, 30):
- # print(i)
- params = {
- 'tn': 'resultjson_com',
- 'ipn': ' rj',
- 'ct': '201326592',
- 'fp': 'result',
- 'queryWord': self.inp,
- 'ie': 'utf-8',
- 'oe': 'utf-8',
- 'word': self.inp,
- 'cg': 'girl',
- 'pn': i,
- 'rn': '30',
- }
- imgres = requests.get(url=self.url, headers=self.headers, params=params)
- code = imgres.status_code
- if code == 200:
- html = imgres.text
- for each in re.findall('"middleURL":"(https://.*?)"', html):
- self.middle.append(each)
- return self.middle
- #线程函数
- def thread(self):
- pool = ThreadPoolExecutor(max_workers=300)
- for eachurl in self.middle:
- pool.submit(self.download, eachurl)
- pool.shutdown()
- # 保存图片下载到本地
- def download(self,eachurl):
- name = eachurl.split('/').pop()
- if not os.path.exists(self.inp):
- os.mkdir(self.inp)
- try:
- with open(f'./{self.inp}/{name}', 'wb') as f:
- img = requests.get(url=eachurl, headers=self.headers)
- f.write(img.content)
- print(f'图片: [ {name} ] 保存成功')
- except:
- pass
- GetImages()
复制代码
|
评分
-
查看全部评分
|