前言

相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片网站,真的很赞!从她的主页界面来看,也许你就会爱上她。

Python资源共享群:484031800

那么,如何将网站中的图片存储到本地呢(例如比较关心跟数据相关的素材)?如果做到了,就可以在没有网络的情况下,随心所欲的选择精美图片制作PPT,随时随地的查看自己的图片库。而本文所要跟大家分享的就是这个问题的解决方案。

爬虫思路

我们知道,对于图片网站的抓取,往往需要经过三层网页链接,为了能够直观地理解这三层链接,可以查看下图:

顶层页:是指通过网站主页的搜索栏,搜索出感兴趣的图片方向,便进入到的图片列表页,它的样子是这样的:

次层页:是指点击图片列表页中的某张图片,转而对应到的图片详情页,它的样子是这样的:

目标页:最后就是为了抓取图片详情页中的那张高清图片,而这张图片在网页源代码中就是一个图片链接,它的样子是这样的:

所以,爬虫抓取图片的最终目的就是找到高清图片所对应的链接。接下来将通过代码的介绍,呈现三层链接的寻找和请求过程。代码的每一行都将对应中文解释,如果还有其他疑问,可以在留言区留言,我会第一时间给你答复。

# 导入第三方包
importrequests
frombs4
importBeautifulSoup
importrandom
importtime
fromfake_useragent
importUserAgent
# 通过循环实现多页图片的抓取
forpage
inrange(
1
,
11
):# 生成顶层图片列表页的链接fst_url = r
'https://colorhub.me/search?tag=data&page={}'
.format(page)# 生成UA,用于爬虫请求头的设置UA =
UserAgent
()# 向顶层链接发送请求fst_response = requests.get(fst_url, headers = {
'User-Agent'
:UA.random})# 解析顶层链接的源代码fst_soup =
BeautifulSoup
(fst_response.text)# 根据HTML的标记规则,返回次层图片详情页的链接和图片名称sec_urls = [i.find(
'a'
)[
'href'
]
fori
infst_soup.findAll(name =
'div'
, attrs = {
'class'
:
'card'
})]pic_names = [i.find(
'a'
)[
'title'
]
fori
infst_soup.findAll(name =
'div'
, attrs = {
'class'
:
'card'
})]# 对每一个次层链接做循环forsec_url,pic_name
inzip(sec_urls,pic_names):# 生成UA,用于爬虫请求头的设置UA =
UserAgent
()ua = UA.random# 向次层链接发送请求sec_response = requests.get(sec_url, headers = {
'User-Agent'
:ua})# 解析次层链接的源代码sec_soup =
BeautifulSoup
(sec_response.text)# 根据HTML的标记规则,返回图片链接pic_url =
'https:'+ sec_soup.find(
'img'
,{
'class'
:
'card-img-top'
})[
'src'
]# 对图片链接发送请求pic_response = requests.get(pic_url, headers = {
'User-Agent'
:ua})# 将二进制的图片数据写入到本地(即存储图片到本地)withopen(pic_name+
'.jpg'
, mode =
'wb'
)
asfn:fn.write(pic_response.content)# 生成随机秒数,用于也没的停留seconds = random.uniform(
1
,
3
)time.sleep(seconds)

不难发现,代码的核心部分就16行,还是很简单的吧。还不赶快去测试一下这里的代码哦(如果你对某个方面感兴趣,如商务、建筑、植物等,通过搜索,找到顶层页链接,替换代码中的fst_url值即可)。

在运行完如上代码后,将会抓取ColorHub网站中的10页图片,一共包含325张高清图片,展示如下:

结语

OK,今天的内容就分享到这里,如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位大咖在留言区分享你们自己的策略,我会第一时间将你的留言分享给大家。

20 行 Python 代码批量抓取免费高清图片!相关推荐

  1. 20行Python 代码批量抓取免费高清图片!

    前言 相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片 ...

  2. 源代码src修改为本地图片_20 行 Python 代码批量抓取免费高清图片!

    前言 相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片 ...

  3. cutycapt php,PHP利用CutyCapt获取网页快照,抓取网页高清图片快照(教程)

    PHP利用CutyCapt获取网页快照,抓取网页高清图片快照(教程): // +------------------------------------------------------------ ...

  4. python利用bs4爬取外国高清图片网站

    python利用bs4爬取外国高清图片网站 爬取高清图片 爬取高清图片 import re import requests from bs4 import BeautifulSoup import o ...

  5. python按关键字爬取必应高清图片

    通过查询前人的博客,发现必应可通过url按关键字查找图片: https://www.bing.com/images/async?q=查询关键字&first=图片编号&count=图片数 ...

  6. 30行Python代码,抓取全网实时热点,获取最新资讯

    想要获取最新实时新闻资讯吗?Python带实现全网爬取新浪新闻重要的头条资讯,你只要运行一下代码,就能快捷地获取新浪新闻头版文章. 接下呈现实现过程 首先导入库 正则和模拟浏览器 学习从来不是一个人的 ...

  7. 20行 Python 代码爬取王者荣耀全英雄皮肤 | 原力计划

    作者 | wangweijun 责编 | Elle 出品 | CSDN 博客 引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王 ...

  8. 如何运用python爬游戏皮肤_Python爬虫练习:20行Python代码爬取王者荣耀全英雄皮肤...

    引言王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成. 准备工作 ...

  9. python爬虫脚本 初级入门爬虫英雄联盟所有皮肤_Python爬虫练习:20行Python代码爬取王者荣耀全英雄皮肤...

    引言王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成. 准备工作 ...

最新文章

  1. docker mac python_Docker Python 例子
  2. vim 7.4同时支持python 2.x和3.x问题调研
  3. 一个c++程序员的学习历程自述
  4. Ubuntu13.04 配置smb服务器-new
  5. SMARTFORM 循环打印实现 (循环调用SMARTFORM)
  6. 使用SeekBar组件调节屏幕亮度
  7. 【译】UNIVERSAL IMAGE LOADER. PART 3---ImageLoader详解
  8. Mysql安装及自动化部署脚本方案
  9. 猎鹰与龙飞船基于Linux,采用C++、Chromium与JS开发
  10. 模板:二维凸包(计算几何)
  11. android实现水平进度条_Flutter在线视频播放功能实现(chewie库)
  12. 产品经理与交互设计师的对话——需求是如何变成产品原型的(转)
  13. 网络流概念及相关算法介绍
  14. 程序员的 10 款代码表白特效,一个比一个浪漫
  15. Axure RP 8 Pro 破解版软件安装包
  16. 【工具】pt-online-schema-change
  17. .net 导出excel_C# 导出 Excel 的 6 种简单方法!你会几种?
  18. PKI体系简易JAVA实现(一):时间戳服务器TSA
  19. matlab在线版 免费,NeuroSolutions for MATLAB
  20. CSS 实现一个动态水形波浪蒙版层

热门文章

  1. python编程趣味试题_python趣味编程100例 python编程100例
  2. 打字母案例完整版(C#)
  3. 【PHPWord】解决Word转PDF可能出现的空白页问题 | 插入换行符、分页符、定义文档网络时对齐网格
  4. Shell-基础部分
  5. mac上的kindle打开mobi文件的方式
  6. 快手信息流广告如何投放才能达到好的效果?
  7. 推荐一款备忘录便签APP简约款安卓版本
  8. DiskGenius 5.4.6.1441 Portable
  9. 对分解和组合思维方法的理解
  10. 删除Excel数据中的空格