利用python爬虫爬取图片并且制作马赛克拼图
想在妹子生日送妹子一张用零食(或者食物类好看的图片)拼成的马赛克拼图,因此探索了一番= =。
首先需要一个软件来制作马赛克拼图,这里使用Foto-Mosaik-Edda(网上也有在线制作的网站,但是我觉得这个比较方便,而且也找到了一个汉化过的版本,地址为http://witmax.cn/foto-mosaik-edda.html)。要制作马赛克拼图,需要一个图片的数据库,至少需要几千张图片。因此需要爬虫来爬取。
从网上学习了一番后copy了一些代码然后从一个外国的图片网站爬取了4000余张关键字为food的图片,python代码如下:
import requests
import re
import os
import time def get_url(url):
kw = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'}
try:
r = requests.get(url, headers=kw)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r
except:
print('wrong!!!!!!!!!!!') def get_photourl(photo_url):
kw = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'}
try:
r = requests.get(photo_url, headers=kw)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r
except:
return 'wrong' def get_photos(url, new_fpath):
result = get_url(url)
# pattern = re.compile(r'src="https://images.pexels.com/photos/(\d+)/(.*?)\.(jpg|jpeg)\?auto=compress&cs=tinysrgb&h=350"', re.S)
pattern = re.compile(
'src="https://images.pexels.com/photos/(\d+)/(.*?)\?auto=compress&cs=tinysrgb&h=750&w=1260"')
# 真正的下载链接是static,不是images开头 items = re.findall(pattern, result.text) print("log!");
for item in items:
print(item); for item in items:
try:
photo_url = 'https://static.pexels.com/photos/' + str(item[0]) + '/' + str(item[1]) + "?auto=compress&cs=tinysrgb&h=350";
print("url: " + photo_url);
# 把图片链接中的images,改成了static
save(photo_url, item, new_fpath)
time.sleep(1)
except:
continue def makedir(new_fpath, i, key):
E = os.path.exists(new_fpath)
if not E:
os.makedirs(new_fpath)
os.chdir(new_fpath)
print('文件夹' + key + '_page' + str(i) + '创建成功!')
else:
print('文件夹已存在!') def save(photo_url, item, new_fpath):
Final_fpath = new_fpath + '/' + str(item[0]) + str(item[1]);
print("保存文件名: " + Final_fpath) print('正在下载图片......') result = get_photourl(photo_url)
if result != 'wrong':
print('下载成功!')
else:
print('失败') E = os.path.exists(Final_fpath) if not E:
try:
with open(Final_fpath, 'wb') as f:
f.write(result.content)
except:
print('下载失败!')
else:
print('图片已存在') def main():
key = input('请输入搜索关键词(英文):') url = 'https://www.pexels.com/search/' + key + '/' # num = int(input('请输入一共要下载的页数:')) # 默认从第1页开始下载
st = int(input('请输入起始页码:'))
ed = int(input('请输入终止页码:')) fpath = 'C:/python/pic'
for i in range(st, ed+1):
new_fpath = fpath + '/' + key + '/' + key + '_page' + str(i)
makedir(new_fpath, i, key)
new_url = url + '?page=' + str(i)
get_photos(new_url, new_fpath)
time.sleep(3) main()
python爬虫代码
不得不说python真的很强大,爬虫真的很有意思,有一种在网页的源代码中分析然后处理做事的快乐~
利用python爬虫爬取图片并且制作马赛克拼图的更多相关文章
- [python爬虫] 爬取图片无法打开或已损坏的简单探讨
本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...
- 如何利用python爬虫爬取爱奇艺VIP电影?
环境:windows python3.7 思路: 1.先选取你要爬取的电影 2.用vip解析工具解析,获取地址 3.写好脚本,下载片断 4.将片断利用电脑合成 需要的python模块: ##第一 ...
- Python 爬虫 爬取图片入门
爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 用户看到的网页实质是由 HTML 代码构成的,爬 ...
- Spider-Python实战之通过Python爬虫爬取图片制作Win7跑车主题
1. 前期准备 1.1 开发工具 Python 3.6 Pycharm Pro 2017.3.2 Text文本 1.2 Python库 requests re urllib 如果没有这些Python库 ...
- 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程
项目内容 本案例选择>> 商品类目:沙发: 数量:共100页 4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...
- 利用Python爬虫爬取指定天猫店铺全店商品信息
本编博客是关于爬取天猫店铺中指定店铺的所有商品基础信息的爬虫,爬虫运行只需要输入相应店铺的域名名称即可,信息将以csv表格的形式保存,可以单店爬取也可以增加一个循环进行同时爬取. 源码展示 首先还是完 ...
- 用Python爬虫爬取广州大学教务系统的成绩(内网访问)
用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- 使用Python爬虫爬取网络美女图片
代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...
随机推荐
- VUE组件2数据传递
传递数据 prop验证 除了传递数组,也可以传递对象 Vue.component('test',{ props:{ price:Number, unit: String } }) 如果price不是数 ...
- JavaScript 之 基本包装类型
基本包装类型 为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String/Number/Boolean. 下面先看一段代码: var s1 = "Hello ...
- AI面试-算法结构基础
其实目前国内几乎只要是技术岗,面试中都100%会问算法和数据结构. 这两者能快速体现候选人真实的水平,比如代码量,代码的质量,性能,思维是否有逻辑,是否灵活. 算法结果概述 1.前言 1.应用范围:机 ...
- H3C 无线交换机的数据转发原理
- Httpd服务进阶知识-LAMP源码编译安装
Httpd服务进阶知识-LAMP源码编译安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道,动态资源交给fastcgi程序处理,静态资源依旧由httpd服务器处理 ...
- 攻防世界高手进阶之Web_python_block_chain(2018年DDCTFmini blockchain)
打开题目大概看了一下,是有关区块链的题目, 感觉代码要格式化一下,不然没法看 代码格式化站点:https://www.html.cn/tool/js_beautify/ hash of genesis ...
- django云端留言板
1.创建应用 django-admin startproject cloudms cd cloudms python manage.py startapp msgapp 2.创建模板文件 在cloud ...
- C语言入门hello world
1.安装软件 c语言开发工具众多,初学者推荐使用Dev-Cpp 5.6.3 TDM-GCC x64 4.8.1 Setup.exe:安装过程全部默认安装即可. 2.使用Dev-Cpp编写第一个入门实例 ...
- wordpress角色权限汇总
我们在用wordpress开发的时候有时候需要设置不同的用户组及权限,具体有哪些角色权限呢?随ytkah一起来看看吧.WordPress使用了角色的概念,旨在让站点所有者能够控制用户在站点中可以做什么 ...
- Opencv python图像处理-图像相似度计算
一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你 ...