用Python爬取wallhaven高清原图
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高清原图相关推荐
- python爬取4k高清壁纸(多线程版)
刚学了多线程,于是把上次写的博客拿出来进行改写, 原文链接:python爬取4k高清壁纸(再也不怕没有壁纸了) 爬取过程已经在上一次写过了,可以点击原文链接查看. 废话不多说,直接上多线程代码: im ...
- Python爬取LOL高清皮肤壁纸
Python爬取LOL高清皮肤壁纸 兴趣点: 这两天复习爬虫,CSDN上看到了一个爬取LOL皮肤的博客,哎这个有意思,看了一下他写的代码,感觉难度还可以,就结合着自己的理解写了一下 参考博客: 传送门 ...
- python爬虫----图片爬取之高清原图
这次又来爬取图片啦,不过这次爬的是原图 大概的思路和上一篇差不多,不同的是不同的网站有不同的反爬策略 爬取的网站是:https://www.pexels.com/ 1.源码分析 进入网站后会出现一个图 ...
- 如何利用 Python 爬取 LOL 高清精美壁纸?
作者 | 阿拉斯加 来源 | 杰哥的IT之旅 一.背景介绍 随着移动端的普及出现了很多的移动 APP,应用软件也随之流行起来.最近看到英雄联盟的手游上线了,感觉还行,PC 端英雄联盟可谓是爆火的游戏, ...
- python爬取4k高清壁纸(再也不怕没有壁纸了)
今天突然想换壁纸,在网上找了一圈没有找到满意的,正好学了爬虫,于是我就想把它们全都爬取下来,慢慢挑选. 这次爬取的目标是:彼岸图网动漫壁纸 接下来,我将详细讲解爬取过程: 首先点开网站,右键–检查 观 ...
- 使用Python爬取微博高清美女大图
打开微博官网,这里以爬取美女博主Duebass的所有图片为例,首先打开她的主页 主页中显示的都是一些小图,我们点击其中的某一张图片,就可以查看她的大图了. 打开F12查看图片的地址信息, //wx4. ...
- Python+Fiddler5带你爬取6000+高清王者荣耀cosplay图
Python+Fiddler5带你爬取6000+高清王者荣耀cosplay图 写在前面 最近在玩蛇的时候发现一个抓包神器Fiddler,简直不要太好用,于是当作练手就把这软件给安排了,王者荣耀盒子一个 ...
- python利用bs4爬取外国高清图片网站
python利用bs4爬取外国高清图片网站 爬取高清图片 爬取高清图片 import re import requests from bs4 import BeautifulSoup import o ...
- python手机壁纸超清_详解Python静态网页爬取获取高清壁纸
前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...
最新文章
- 数据库:SQL Server与MySQL
- 对于防止匿名评论/访问的操作
- sybase游标使用方法
- Adempiere 在Ubuntu下的安装方法(二)
- 单例模式的七种实现方法(java版)
- C站最全Python库总结丨标准库+高级库
- sqlplus补丁包rlwrap-0.37的安装步骤(解决SQL的删除、上翻历史命令等)
- windows下命令
- oracle插入CLOB类型超过4000个字符报ORA-01704错的解决方法及其它相关场景解决方案...
- JDK 8_jstack命令使用
- android 打包问题,Android离线打包常见问题
- IO中的阻塞、非阻塞、同步、异步概念分析详解(通俗易懂)
- 一款强大的通讯录管理软件,Cardhop让你管理和编辑联系人更加方便和多样化
- c语言输出七行的菱形,C语言输出一个菱形图案(有程序)
- 电脑键盘部分按键失灵_键盘失灵_电脑键盘失灵怎么办_电脑键盘失灵_笔记本键盘失灵怎么办-太平洋IT百科...
- 那些年我们听过的法则
- 邓元鋆:AMD的方法论
- Android Things在 #io17
- PostgreSQL学习手册
- 上溯造型、下溯造型的理解