wallhaven高清原图爬取

  • 第一步:整理思路
  • 第二步:分析网址
  • 第三步:编写代码

第一步:整理思路

首先要知道自己要干嘛,怎么干,去哪里干?要干嘛?我们要爬取图片,而且我们要原图。怎么干?这里我用的到的语言是python,用python爬取更为简单。去哪里干?今天我们要爬取的是一个国外的网址'https://wallhaven.cc’这个网址的图片还是很nice的好了现在准备工作有了,那就正式开始爬取图片

第二步:分析网址

 我们先进入到网站首页


进入到首页我们发现这个是类似于百度一样的是靠通过关键字搜索,然后匹配出来的图片。
然后随便输入一个关键字进行搜索试一下

这里我们可以看到,我搜索的关键字是‘boy’,得到了现在这个页面,接下来我们随便找个图片,分析一下网址的结构,

进入开发者模式可以看到网页源代码,我们所要获取的图片是在‘<a’标签里的,只不过你会发现这里有两个非常相似的链接

第一个链接是‘.jpg’结尾的那它肯定就是一个图片链接,那我们就可以先通过几行简单的代码下载一下,或者直接复制链接打开,看是不是我们所要的高清原图

很明显看到这个链接是个缩略图,不是我们想要的图片链接
第二个链接我们用同样的方式进行操作

没错这个就是我们想要的得要的图片,这里我们一样先进入开发者模式,查看网站源代码,在从源代码中得到图片的地址

这个就是我们所要下载的图片地址,到了这里网站分析就ok了,现在整理一下思路:
1:先进入到网站首页通过关键字搜索得到图片
2:接着分析网页源代码发现了原图的链接
3:然后通过原图链接得到了原图下载链接

一切准备就绪,开始实战吧!

第三步:编写代码

通过以上分析,得到的思路也就比较明确了
代码如下:

import re
import requests
import time
import osif __name__=='__main__':header={'accept':'text/html, */*; q=0.01','accept-language':'zh-CN,zh;q=0.9','user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36',}Q=str(input('请输入你要搜索的内容【仅支持英文】:'))N=int(input('请输入你要下载图片的数量:'))if os.path.exists('D:/wallhaven/'+Q)==False:    #检查目录,如果目录不存在则返回一个False,然后自动创建一个目录os.mkdir('D:/wallhaven/'+Q)counts = 1  #链接次数num = 1     #控制页数html = []Tag=Trueprint('正在获取资源,请等待------')while Tag==True:if num == 1:url='https://wallhaven.cc/search?q='+Qelse:url='https://wallhaven.cc/search?q='+Q+'&page='+str(num)try:requ=requests.get(url,timeout=30,headers=header)requ.encoding='utf-8'except:print('图片资源获取失败')findurl='<a class="preview" href=(.*?) target.*?></a>'  #正则匹配lowhtml=re.findall(findurl,requ.text,re.S|re.M)for kk in lowhtml:print('已获取'+str(counts)+'张图片资源')counts += 1l=kk.replace('"','').strip()        #去除链接的双引号和空格try:newhtml=requests.get(l,timeout=30)newhtml.encoding = 'utf-8'except:print('图片资源获取失败')continuecc='<img id="wallpaper" src="(.*?)" alt.*?></div>'newfind=re.findall(cc,newhtml.text,re.M|re.S)for I in newfind:if I is None:print('图片资源获取失败')else:html.append(I)      #把匹配到的链接存放到html列表里if counts>N:    #当获取的链接大于你想要的链接时,就得跳出整个循环Tag = Falsebreaknum += 1print('---图片资源已全部获取完毕,正在准备下载操作')print('---过程稍慢,请耐心等待!')Count = 1for img in html:print('正在下载第'+str(Count)+'张图片')try:photo=requests.get(img,timeout=20)except:print('图片下载失败,自动下载下一张')Filepath=r'D:/wallhaven/'+Q+'/'fpath=open(Filepath+Q+str(Count)+'.jpg','wb+' )fpath.write(photo.content)fpath.close()time.sleep(3)Count+=1print('---图片已全部下载完毕')

因为这个网址是国外的,所以下载速度比较慢,
本人亲测下载有效,不过代码也是刚写出来还没有优化,也存在几个小bug(建议下载图片数量不要一次大于100张),目前还没有解决,希望发现的小伙伴们及时提出,我加以改正。

python还是一门很值得小白学习的一门语言,该语言语法简单,通俗易懂,用来爬虫是真的很香!

最后希望,此篇文章能对你有所帮助!

用Python爬取wallhaven高清原图相关推荐

  1. python爬取4k高清壁纸(多线程版)

    刚学了多线程,于是把上次写的博客拿出来进行改写, 原文链接:python爬取4k高清壁纸(再也不怕没有壁纸了) 爬取过程已经在上一次写过了,可以点击原文链接查看. 废话不多说,直接上多线程代码: im ...

  2. Python爬取LOL高清皮肤壁纸

    Python爬取LOL高清皮肤壁纸 兴趣点: 这两天复习爬虫,CSDN上看到了一个爬取LOL皮肤的博客,哎这个有意思,看了一下他写的代码,感觉难度还可以,就结合着自己的理解写了一下 参考博客: 传送门 ...

  3. python爬虫----图片爬取之高清原图

    这次又来爬取图片啦,不过这次爬的是原图 大概的思路和上一篇差不多,不同的是不同的网站有不同的反爬策略 爬取的网站是:https://www.pexels.com/ 1.源码分析 进入网站后会出现一个图 ...

  4. 如何利用 Python 爬取 LOL 高清精美壁纸?

    作者 | 阿拉斯加 来源 | 杰哥的IT之旅 一.背景介绍 随着移动端的普及出现了很多的移动 APP,应用软件也随之流行起来.最近看到英雄联盟的手游上线了,感觉还行,PC 端英雄联盟可谓是爆火的游戏, ...

  5. python爬取4k高清壁纸(再也不怕没有壁纸了)

    今天突然想换壁纸,在网上找了一圈没有找到满意的,正好学了爬虫,于是我就想把它们全都爬取下来,慢慢挑选. 这次爬取的目标是:彼岸图网动漫壁纸 接下来,我将详细讲解爬取过程: 首先点开网站,右键–检查 观 ...

  6. 使用Python爬取微博高清美女大图

    打开微博官网,这里以爬取美女博主Duebass的所有图片为例,首先打开她的主页 主页中显示的都是一些小图,我们点击其中的某一张图片,就可以查看她的大图了. 打开F12查看图片的地址信息, //wx4. ...

  7. Python+Fiddler5带你爬取6000+高清王者荣耀cosplay图

    Python+Fiddler5带你爬取6000+高清王者荣耀cosplay图 写在前面 最近在玩蛇的时候发现一个抓包神器Fiddler,简直不要太好用,于是当作练手就把这软件给安排了,王者荣耀盒子一个 ...

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

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

  9. python手机壁纸超清_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

最新文章

  1. 数据库:SQL Server与MySQL
  2. 对于防止匿名评论/访问的操作
  3. sybase游标使用方法
  4. Adempiere 在Ubuntu下的安装方法(二)
  5. 单例模式的七种实现方法(java版)
  6. C站最全Python库总结丨标准库+高级库
  7. sqlplus补丁包rlwrap-0.37的安装步骤(解决SQL的删除、上翻历史命令等)
  8. windows下命令
  9. oracle插入CLOB类型超过4000个字符报ORA-01704错的解决方法及其它相关场景解决方案...
  10. JDK 8_jstack命令使用
  11. android 打包问题,Android离线打包常见问题
  12. IO中的阻塞、非阻塞、同步、异步概念分析详解(通俗易懂)
  13. 一款强大的通讯录管理软件,Cardhop让你管理和编辑联系人更加方便和多样化
  14. c语言输出七行的菱形,C语言输出一个菱形图案(有程序)
  15. 电脑键盘部分按键失灵_键盘失灵_电脑键盘失灵怎么办_电脑键盘失灵_笔记本键盘失灵怎么办-太平洋IT百科...
  16. 那些年我们听过的法则
  17. 邓元鋆:AMD的方法论
  18. Android Things在 #io17
  19. PostgreSQL学习手册
  20. 上溯造型、下溯造型的理解

热门文章

  1. 集成支付平台是什么?
  2. OpenPortal V5认证计费系统说明文档
  3. 权威解读医学影像AI路线图:AI未来会在很大程度上取代医生读片
  4. 生信分析平台搭建(八):利用Synaptic安装生物软件
  5. 南京大学声学基础(第三版)杜功焕第二章(未完结)
  6. python卡尔曼滤波_[转]python起步之卡尔曼滤波
  7. matlab读csv文件
  8. 如何快速找到自己想要的资源?
  9. 【论文速览】深度模型-降维与聚类
  10. 无极性的电容能代替有极性的电容吗?