想在妹子生日送妹子一张用零食(或者食物类好看的图片)拼成的马赛克拼图,因此探索了一番= =。

  首先需要一个软件来制作马赛克拼图,这里使用Foto-Mosaik-Edda(网上也有在线制作的网站,但是我觉得这个比较方便,而且也找到了一个汉化过的版本,地址为http://witmax.cn/foto-mosaik-edda.html)。要制作马赛克拼图,需要一个图片的数据库,至少需要几千张图片。因此需要爬虫来爬取。

  从网上学习了一番后copy了一些代码然后从一个外国的图片网站爬取了4000余张关键字为food的图片,python代码如下:

  1 import requests
  2 import re
  3 import os
  4 import time
  5
  6
  7 def get_url(url):
  8     kw = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'}
  9     try:
 10         r = requests.get(url, headers=kw)
 11         r.raise_for_status()
 12         r.encoding = r.apparent_encoding
 13         return r
 14     except:
 15         print('wrong!!!!!!!!!!!')
 16
 17
 18 def get_photourl(photo_url):
 19     kw = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'}
 20     try:
 21         r = requests.get(photo_url, headers=kw)
 22         r.raise_for_status()
 23         r.encoding = r.apparent_encoding
 24         return r
 25     except:
 26         return 'wrong'
 27
 28
 29 def get_photos(url, new_fpath):
 30     result = get_url(url)
 31     # pattern = re.compile(r'src="https://images.pexels.com/photos/(\d+)/(.*?)\.(jpg|jpeg)\?auto=compress&cs=tinysrgb&h=350"', re.S)
 32     pattern = re.compile(
 33         'src="https://images.pexels.com/photos/(\d+)/(.*?)\?auto=compress&cs=tinysrgb&h=750&w=1260"')
 34     # 真正的下载链接是static,不是images开头
 35
 36     items = re.findall(pattern, result.text)
 37
 38     print("log!");
 39     for item in items:
 40         print(item);
 41
 42     for item in items:
 43         try:
 44             photo_url = 'https://static.pexels.com/photos/' + str(item[0]) + '/' + str(item[1]) + "?auto=compress&cs=tinysrgb&h=350";
 45             print("url: " + photo_url);
 46             # 把图片链接中的images,改成了static
 47             save(photo_url, item, new_fpath)
 48             time.sleep(1)
 49         except:
 50             continue
 51
 52
 53 def makedir(new_fpath, i, key):
 54     E = os.path.exists(new_fpath)
 55     if not E:
 56         os.makedirs(new_fpath)
 57         os.chdir(new_fpath)
 58         print('文件夹' + key + '_page' + str(i) + '创建成功!')
 59     else:
 60         print('文件夹已存在!')
 61
 62
 63 def save(photo_url, item, new_fpath):
 64     Final_fpath = new_fpath + '/' + str(item[0]) + str(item[1]);
 65     print("保存文件名: " + Final_fpath)
 66
 67     print('正在下载图片......')
 68
 69     result = get_photourl(photo_url)
 70     if result != 'wrong':
 71         print('下载成功!')
 72     else:
 73         print('失败')
 74
 75     E = os.path.exists(Final_fpath)
 76
 77     if not E:
 78         try:
 79             with open(Final_fpath, 'wb') as f:
 80                 f.write(result.content)
 81         except:
 82             print('下载失败!')
 83     else:
 84         print('图片已存在')
 85
 86
 87 def main():
 88     key = input('请输入搜索关键词(英文):')
 89
 90     url = 'https://www.pexels.com/search/' + key + '/'
 91
 92     # num = int(input('请输入一共要下载的页数:'))  # 默认从第1页开始下载
 93     st = int(input('请输入起始页码:'))
 94     ed = int(input('请输入终止页码:'))
 95
 96     fpath = 'C:/python/pic'
 97     for i in range(st, ed+1):
 98         new_fpath = fpath + '/' + key + '/' + key + '_page' + str(i)
 99         makedir(new_fpath, i, key)
100         new_url = url + '?page=' + str(i)
101         get_photos(new_url, new_fpath)
102         time.sleep(3)
103
104
105 main()

python爬虫代码

  

  不得不说python真的很强大,爬虫真的很有意思,有一种在网页的源代码中分析然后处理做事的快乐~

转载于:https://www.cnblogs.com/zzyDS/p/9385036.html

利用python爬虫爬取图片并且制作马赛克拼图相关推荐

  1. 【爬虫】利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2)...

    [爬虫]利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2) 第一篇( http://blog.itpub.net/26736162/viewspace-22865 ...

  2. 【大学生课程实践】实操:使用Python爬虫爬取图片

    实操:使用Python爬虫爬取图片 参考链接: 源码部署 安装源码中的爬虫库 创建 images文件 参考链接: 本博客作为大佬博客学习笔记记录 参考链接:孩子说"你没看过奥特曼" ...

  3. python爬虫爬取图片无法打开_半小时入门python爬虫爬下网站图片,不能再简单了...

    阅读本文大约需要2分钟 本文旨在为没有爬虫基础的,偶尔想爬虫爬一下某个网站上的图片的初学者使用,如果你已经是对爬虫很熟悉了,下面依然有你感兴趣的东西. 我最近也才正儿八经学习了下爬虫,出于某种需要爬一 ...

  4. Python爬虫爬取图片

    ** Python爬虫爬取网站指定图片(多个网站综合经验结论分享) ** 我想以这篇文章来记录自己学习过程以及经验感受,因为我也是个初学者.接下来我将分享几个我爬取过的图片网站,给大家们分享下自己的方 ...

  5. [python爬虫] 爬取图片无法打开或已损坏的简单探讨

    本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...

  6. 简易爬虫-利用Python爬虫爬取圣墟小说到本地

    大家好,今天给大家带来Python爬虫的简易制作,很适合新手练手. 爬虫即是利用程序模仿真实用户浏览网页并记录目标内容,从而可避过网站的广告,以获取较好的阅读体验. 本次以辰东大神的新书<圣墟& ...

  7. python爬虫爬取图片的简单步骤和实现代码

    目录 1. 如何获取网页信息 1). 直接从网络读取 2). 先将网页源码保存到本地,再读取 2. 分析获取到的网页信息,提取需要的信息(图片地址) 3. 使用request将图片保存到本地以及会碰到 ...

  8. 利用Python爬虫爬取网页福利图片

    最近几天,学习了爬虫算法,通过参考书籍,写下自己简单爬虫项目: 爬取某福利网站的影片海报图片 环境:anaconda3.5+spyder3.2.6 目录 1.本节目标 2.准备工作 3.抓取分析 4. ...

  9. 利用Python爬虫爬取斗鱼直播间信息,以及直播的实际人数!

    首先我准备利用mysql来存储我爬取的信息,建一个host表如下: 然后下载pymysql ,利用它与数据库链接,因为在这里我只涉及到写入的操作: Unit_Mtsql 然后就是使用Beautiful ...

最新文章

  1. mysql计算两gps坐标的距离_mysql 计算两坐标间的距离
  2. ASP.NET中随机数生成及应用
  3. 用Java获取文件的MD5校验和
  4. 使用git将本地项目上传到github
  5. PAT甲级1050 String Subtraction:[C++题解]字符串作差
  6. TestNG执行测试
  7. java json特殊字符处理_java json字符串传递给 js 时 特殊字符转义错误 研究
  8. python输出进度条 tqdm_python-tqdm进度条
  9. WPF视频会议系统资料
  10. 服务消费和负载(Feign)
  11. Atitit dsl实现(1)------异常的库模式实现  异常的ast结构
  12. 苹果原壁纸高清_苹果iPhone全面屏桌面壁纸 第89期 苹果x手机专用高清壁纸
  13. 微型计算机中央处理器又称为,微处理器又称为什么
  14. 代理服务器的工作原理是什么?
  15. 中文三元组联合标注工具LAnn介绍
  16. CUDA11.1安装AlphaPose
  17. The CUDA compiler identification is unknown 解决
  18. 分享一个自用小功能--微信小程序二维码签到
  19. 在idear中基于ssm框架做一个项目需要考虑的基本步骤
  20. springboot网吧管理系统

热门文章

  1. 数位云Android SDK接入指南
  2. modbus协议(2)
  3. JanusGraph环境搭建实战
  4. 计算机学院早操规定,通知公告|南京邮电大学早操管理规定(暂行)
  5. 服务器2003蓝屏A5修复,重装Win7系统开机蓝屏错误代码0X000000a5的修复方案
  6. Dubbo+Flutter在线交友平台教程第四天 圈子功能实现
  7. sony直营店可以享受到什么体验和服务?
  8. 2022年华为软件精英挑战赛区域初赛解读(基于数学规划模型附代码)
  9. 2.nltk下载语料库(一直提示连接失败/内核nltk直接挂了)
  10. 浪潮8465m4安装linux,NF8465M4 – IPMI设置