鱼C论坛

 找回密码
 立即注册
查看: 1032|回复: 0

[作品展示] 爬取百度图片

[复制链接]
发表于 2020-1-17 20:31:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import requests
  2. import re
  3. import os
  4. from concurrent.futures import ThreadPoolExecutor

  5. class GetImages:
  6.     middle = []
  7.     headers = {
  8.         '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'
  9.     }
  10.     inp = None
  11.     num = None
  12.     url = 'https://image.baidu.com/search/acjson'
  13.     #初始化数据
  14.     def __init__(self):
  15.         self.inp = input('请输入搜索的名称:')
  16.         self.num = int(input('请输入要下载的页数(30为1页):'))
  17.         if self.findurl():
  18.             self.thread()
  19.             print(f'文件存放在当前路径下 "{self.inp}" 文件夹内')
  20.     #获取图片链接
  21.     def findurl(self):
  22.         for i in range(30, 30 * self.num + 1, 30):
  23.             # print(i)
  24.             params = {
  25.                 'tn': 'resultjson_com',
  26.                 'ipn': ' rj',
  27.                 'ct': '201326592',
  28.                 'fp': 'result',
  29.                 'queryWord': self.inp,
  30.                 'ie': 'utf-8',
  31.                 'oe': 'utf-8',
  32.                 'word': self.inp,
  33.                 'cg': 'girl',
  34.                 'pn': i,
  35.                 'rn': '30',
  36.             }
  37.             imgres = requests.get(url=self.url, headers=self.headers, params=params)
  38.             code = imgres.status_code
  39.             if code == 200:
  40.                 html = imgres.text
  41.                 for each in re.findall('"middleURL":"(https://.*?)"', html):
  42.                     self.middle.append(each)
  43.         return self.middle
  44.     #线程函数
  45.     def thread(self):
  46.         pool = ThreadPoolExecutor(max_workers=300)
  47.         for eachurl in self.middle:
  48.             pool.submit(self.download, eachurl)
  49.         pool.shutdown()

  50.     # 保存图片下载到本地
  51.     def download(self,eachurl):
  52.         name = eachurl.split('/').pop()
  53.         if not os.path.exists(self.inp):
  54.             os.mkdir(self.inp)
  55.         try:
  56.             with open(f'./{self.inp}/{name}', 'wb') as f:
  57.                 img = requests.get(url=eachurl, headers=self.headers)
  58.                 f.write(img.content)
  59.                 print(f'图片: [ {name} ] 保存成功')
  60.         except:
  61.             pass
  62. GetImages()
复制代码



评分

参与人数 2荣誉 +7 鱼币 +7 贡献 +3 收起 理由
2651175440 + 5 + 5 + 3 大佬,可以讲一下思路吗?
zltzlt + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 03:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表