爬取百度Flickr图像

import requests
from threading import Thread
import re
import time
import hashlibclass BaiDu:"""爬取百度图片"""def __init__(self, name, page):self.start_time = time.time()self.name = nameself.page = page#self.url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&rn=60&'self.url = 'https://image.baidu.com/search/acjson'self.header = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}# 添加为自己的浏览器版本,具体操作网上一大推self.num = 0self.all_num = 0self.thread_all = [] # thread numdef queryset(self):"""将字符串转换为查询字符串形式"""pn = 0for i in range(int(self.page)):pn += 60 * iname = {'word': self.name, 'pn': pn, 'tn':'resultjson_com', 'ipn':'rj', 'rn':60}url = self.urlself.all_num += 60self.getrequest(i, url, name)def getrequest(self, index, url, data):"""发送请求"""print('[INFO]: 开始发送请求:' + url)ret = requests.get(url, headers=self.header, params=data)if str(ret.status_code) == '200':print('[INFO]: request 200 ok :' + ret.url)else:print('[INFO]: request {}, {}'.format(ret.status_code, ret.url))response = ret.content.decode()img_links = re.findall(r'thumbURL.*?\.jpg', response)links = []# 提取urlfor link in img_links:links.append(link[11:])self.build_thread(index, links)def saveimage(self, links):"""保存图片"""for i, link in enumerate(links):if not link:continue#print('[INFO]:正在保存图片:' + link)m = hashlib.md5()m.update(link.encode())name = m.hexdigest()try:ret = requests.get(link, headers = self.header)image_content = ret.contentfilename = './images/' + name + '.jpg'with open(filename, 'wb') as f:f.write(image_content)#print('[INFO]:保存成功,图片名为:{}.jpg'.format(name))except Exception:passself.num += 1def run(self):for thred_p in self.thread_all:thred_p.start()for thred_p in self.thread_all:thred_p.join() def build_thread(self, i, links):"""多线程"""self.thread_all.append(Thread(target=self.saveimage, args=(links,)))def __del__(self):end_time = time.time()print('request total images: {}, actual download images: {}, time cost {} second'.format(self.all_num, self.num, (end_time - self.start_time)))def main():hand_name = ['人脸', 'head','arm']for name in hand_name:#name = '手势图像'#input('请输入你要爬取的图片类型: ')page = 10 #input('请输入你要爬取图片的页数(60张一页):')baidu = BaiDu(name, page)baidu.queryset()baidu.run()if __name__ == '__main__':main()
#coding:utf-8import flickrapi
import urllib
import os
from threading import Thread
from tqdm import tqdmclass CrawlFlickr:def __init__(self, API_KEY="", API_SECRET="", SavePath="", PerPage=10, Text="", Tags="", ThreadNum=4,MaxCounter=10):self.urls = []self.ThreadNum = ThreadNumself.SavePath = SavePathself.Thread_All = []self.MaxCounter = MaxCounterflickr = flickrapi.FlickrAPI(API_KEY, API_SECRET, cache=True)self.photos=flickr.walk(text=Text,tag_mode='all',tags=Tags,extras='url_c',per_page=PerPage,           # may be you can try different numbers..sort='relevance')self.get_url()self.build_thread()def get_url(self):for i, photo in enumerate(self.photos):url = photo.get('url_c')if str(url) == "None":continueself.urls.append(url)if i >= self.MaxCounter:breakif i%200==0:print('get {} url, max {}\n'.format(len(self.urls), self.MaxCounter))print('\nget {} url finish.....\n'.format(len(self.urls)))def build_thread(self):if self.ThreadNum >= len(self.urls):raise ValueError(f"Input Thread number is large: {self.ThreadNum},""while data is small: {len(self.urls)}")part = len(self.urls) // self.ThreadNumfor i in range(self.ThreadNum)[::-1]:self.Thread_All.append(Thread(target=self.get_img, args=(self.urls[i * part:],)))self.urls = self.urls[:i * part]print('build thread finish...\n')def run(self):for thred in self.Thread_All:thred.start()for thred in self.Thread_All:thred.join()print('download image finish...\n')def get_img(self, urls):for url in urls:img_name = url.split('/')[-1]if '.jpg' in img_name or '.png' in img_name:urllib.request.urlretrieve(url, os.path.join(self.SavePath, img_name))print('download {}\n'.format(os.path.join(self.SavePath, img_name)))if __name__ == "__main__":param = dict(API_KEY="", API_SECRET="", SavePath="./images", PerPage=10,Text="human pose", Tags="", ThreadNum=8,MaxCounter=500)crawl_flickr = CrawlFlickr(**param)crawl_flickr.run()

爬取取百度和Flickr图像相关推荐

  1. python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片

    Python 爬虫系列教程一爬取批量百度图片https://blog.csdn.net/qq_40774175/article/details/81273198# -*- coding: utf-8 ...

  2. python爬取明星百度图片并存入本地文件夹

    python爬取明星百度图片并存入本地文件夹 想要一个明星图片的时候,发现图片量过大,一张张保存太累,不太现实 这时候就可以用到爬虫,批量爬取图片 现在又出现一个问题,当发现一个明星爬完后,再爬取下一 ...

  3. python3爬虫系列03之requests库:根据关键词自动爬取下载百度图片

    python3爬虫系列03之requests库:根据关键词自动爬取下载百度图片 1.前言 在上一篇文章urllib使用:根据关键词自动爬取下载百度图片 当中,我们已经分析过了百度图片的搜索URL的变化 ...

  4. java 爬取百度云盘,百度网盘资源抓取 爬虫

    [实例简介] 简要实现了百度网盘资源的抓取,以及定时抓取,百度分享用户的抓取以及资源抓取,booststrap 页面 [实例截图] [核心代码] da0a5e77-e599-4f8f-829f-edb ...

  5. python4k高清图片_第一次接触,尝试用python抓取国外4k高清图像数据,真方便

    计划了很久,终于还是利用在家的几个月时间,开始学习python编程. 作为一个学霸,我更愿意在实践中学习,实践出来的效果给我更多的信心和乐趣,于是,我花了大约一个月的时间,看了一本Python入门的相 ...

  6. java抠图人物背景图片_PS扣取纯色背景的人物图像

    本菜鸟将为大家讲解下PS扣取纯色背景的人物图像.如证件照和前期摄影作品,好了,下面我们来学习吧! 方法/步骤 1.首先,我们先用Photoshop打开我们准备好的文件.图像为纯色背景的.最好人物与背景 ...

  7. tesseract破解css反爬抓取自如租房信息

    引言 作为一个刚毕业两年的打工人,在深圳这种房价压死人的城市,买房是不可能买房了,只能寄希望于租到一个便宜又舒适的房子.今天给大家带来的案例是tesseract破解css反爬抓取自如租房信息,将好房源 ...

  8. 【Python】调用百度云API图像搜索服务

    # encoding:utf-8 # !/usr/local/bin/python3# 百度云:图像搜索服务 # 应用名称:垃圾分类小助手import urllib, urllib.request, ...

  9. 基于百度AI的图像文字提取应用程序

    基于百度AI的图像文字提取应用程序 现如今,图像提取文字功能被越来越多人需要,尤其是办公与教学.但是目前app提供的都是有偿服务,其实,我们完全可以自己编写小程序来实现,下面是小编自己制作的一个实现图 ...

最新文章

  1. 像“打游戏”一样用Numpy,试试?
  2. dot-- 资源汇总
  3. 2020 年 3 月全国程序员工资排名!
  4. 学习历程(一)第一个微信打卡器
  5. live555作为RTSP客户端对接大华的某款球机RTSP流时不能预览问题的解决方案
  6. 电脑重装系统后谷歌浏览器连不上网的解决方案
  7. 使用云服务器搭建我的世界(Minecraft)服务端
  8. android的sd卡分区,超强Android系统SD卡分区教程!
  9. 多元思维模型——全学科及其核心思维模型
  10. 使用阿里云OSS对象存储搭建个人图床
  11. 基于讯飞语音引擎3.0.apk的Android原生TTS
  12. net start MySQL——无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。
  13. 前端面试JS必备基础之深浅拷贝和this指向问题@莫成尘
  14. 嵌入式单片机基础篇(一)之stm32F1GPIO详解
  15. Redis - 几款可视化工具
  16. 门店私域流量运营怎么做?
  17. 二维码20项应用模式大盘点
  18. 编译linux内核报错,/bin/sh: 1: flex: not foundscripts/Makefile.host:9: recipe for target ‘scripts/kconfig/
  19. 【五六七人口普查】省市两级分年龄、性别的人口
  20. DO、PO、VO、DTO、BO、POJO概念

热门文章

  1. kmp---Simpsons’ Hidden Talents(初学者能看懂的算法)
  2. PPT结束语有哪些?
  3. 免费开源的建站程序大全,不会编程也可以自助搭建网站了哦
  4. 正版推荐 -Macs Fan Control 控制苹果电脑上风扇工具软件
  5. jdk1.8 官网下载 必须注册_【英雄联盟手游】账号注册教程!
  6. poi导入excel数据思路
  7. 各蓝牙版本发布时间以及主要特点
  8. Mirai源码分析报告 (1)
  9. Photoshopcs6 自学笔记二 图像处理
  10. c语言叶子,一片很好看的叶子