我学爬虫一直有一个梦想,就是想真正达到可见即可爬的态度,所以我一直在尝试找一种方式去搞定它,从最开始的模拟接口去交接数据,但是我发现这行不通,然而条条大路通罗马,后浪又怎么能这么消逝在沙滩上,直到我想了一个问题,为什么我们每次保存图片都是JPG格式,为什么不是PNG格式? 那我就查阅了相关文献,终于,我成功了,我用另类的方式搞定了这些限制次数的图库,这是一次大胆的创意,可以适用在任何图站,希望对大家有帮助!

都2021年了,爬虫党还在为了图片的下载质量烦恼吗?还是只会下载JPG图片?那我有一种另类方式可以帮助你真正的白嫖高质量图片,肝了一个礼拜的干货,绝对能改变你对爬虫的看法和思考,原来爬虫这么有趣,也不会这么思维固然,代码方式尽量简单一点,让大家能看懂,加油各位!

防止有人说我标题党,我先给图致敬,绝对是4k以上画质,作假的剁手!


技术分析:

爬虫还用JPG?

这个另类技术设计到一点值得我们思考,我们每次爬虫保存的图片都是默认JPG,为什么

  • 先不管他们的定义是什么,简单来说,JPG就是一种有损压缩技术,在符合所需画质的前提下,尽可能的提高压缩比,来减少储存空间,所以传输速度快,文件小,画质低,这也就是网站为什么都用JPG来存储图片了。

  • 而PNG我定义就是一种大保健,他能保存完整的画质,也就是相对无损压缩技术,缺点也就是存储空间大,保留了很多原始通道,所以网站不采用,爬虫教学也不采用。

  • 而位图的定义,理论上是可以无限放大的,JPG作为位图自然是糟糕的选择,而PNG确实是一个完美的搭档,这里我就钻了这个空子,用了这种方式搞定了高清图库。

  • 采用这种方式,我不是吹嘘我有多厉害,可能有人想过,但是我只是分享这种方式给更多的朋友,改善他们的固有思维,如果你想要小图片的话保存JPG也是很好的选择,而我喜欢高清大图,我采用的是PIL库的Image类的操作,下面我会给出很好的解释。这是一个全站点图片爬取的爬虫,速度可能有点慢,我尽力使用了线程池,谢谢理解!

技术关键代码:

存储为位图,然后无损放大图片,就可以得到我们的效果了,还不懂的留言问我。

with open(''.join(name) + '.png', 'wb') as fw:fw.write(rr.content)img = Image.open(''.join(name) + '.png')img = img.resize((4000, 2000), Image.ANTIALIAS)  # 改变大小 抗锯齿# print(img.size)img.save(''.join(name) + '.png', quality=95)  # 质量分数 95

如果看到这里觉得对你有帮助的,希望给个在看和赞,这是对我最大的支持!

项目技术:

还是熟悉的网站 彼岸图网(http://pic.netbian.com/) 这个网站质量挺高的,但是有个缺点就是限制次数,所以这次就决定搞它了,其他网站也是大同小异之作。

总的步骤分了几大模块,设计到的技术点不是很多,requests和xpath 作为爬虫基础技术,还有Image类和线程池技术,然后文件的os库也是必须的。

我保证说的很清楚,我们就开始实践吧!

获取分组网址和标题:

我们这次做的是一个全站点爬取,所以得考虑分组问题,这里我们编写爬虫获取箭头所指向的信息,我保存为一个列表,方便我接下来的操作。


代码:

def get_groups(url, headers):  # 获得重要信息"""根据传入的最初网址和标题头,获得每个专栏的网址和标题"""r = requests.get(url, headers=headers)r.encoding = r.apparent_encoding  # 转换编码if r.status_code == 200:html = etree.HTML(r.text)html = etree.tostring(html)html = etree.fromstring(html)url_list = html.xpath(r"//div[@class='classify clearfix']//a/@href")  # 获得网页分组的urlname = html.xpath(r"//div[@class='classify clearfix']//a/text()")  # 获得网页分组的标题else:print('请求错误!')return name, url_list  # 把分组标题和分组网址回溯

开始下载选择:

获取成功这些我们就开始选择下载,更友好和人性化:

这里我就简单的写写哈,别介意:


代码如下:

def begin_down(title, url, headers):  # 下载选择"""这里的参数为刚获取的标题和网址还有请求头"""print('白嫖方式下载高清图片'.center(30, '-'))for i, j in enumerate(title):print(i, '\t\t\t\t\t', j)inp = int(input('输入下载选项:'))# print(title[inp], url[inp])get_image_1st(title[inp], url[inp], headers)  # 调用第一页的网址进行下载get_image(title[inp], url[inp], headers)  # 下载剩下的所有页

这里获取的网址需要到下一步进行拼接,根据我的观察,分组网站的第一页和其他页网址不相连,没有规律可循,所以我写了爬取第一页和爬取其他页二个函数来获取图片,这里下面我也会说。

获取图片网址:


随后我们点击图片进入这样页面,看我箭头标注,我们要获取href的内容,而不是img中的网址,img里面的是缩小图片,没什么质量,看多了还伤眼睛,不值得,我给你大图,你也爽。编写代码,获取href然后网址拼接这个样子 http://pic.netbian.com/tupian/17781.html 就可以打开了。

代码:

def get_image_1st(title, url, headers):  # 得到第一页的图片网址url_1st = 'http://pic.netbian.com/' + url  # 拼接分组网址r = requests.get(url_1st, headers)if r.status_code == 200:html = etree.HTML(r.text)html = etree.tostring(html)html = etree.fromstring(html)page_url = html.xpath(r'//ul[@class="clearfix"]//li/a/@href')  # 获得每张图片的真实网址#  print(page_url)page_url = ['http://pic.netbian.com' + i for i in page_url]  # 网址拼接pool_down(title, page_url, headers)  # 调用图片下载函数 下载选择页的 第一页全部图片,因为第一页网址特殊def get_image(title, url, headers):  # 得到其他页的图片网址"""找其他页的网址,然后找到每张图片的点击图片网址"""pages_url = []for i in range(2, 10):  # 我们假定最大翻页为10页other_url = 'http://pic.netbian.com' + url + 'index_' + str(i) + '.html'  # 拼接网址# print(other_url)r = requests.get(other_url, headers=headers)  # 尝试请求第二页 获得图片的点击网址if r.status_code == 200:html = etree.HTML(r.text)html = etree.tostring(html)html = etree.fromstring(html)page_url = html.xpath(r'//ul[@class="clearfix"]//li/a/@href')  # 获得每张图片的真实网址page_url = ['http://pic.netbian.com' + i for i in page_url]  # 网址拼接pages_url.append(page_url)pool_down(title, pages_url, headers)  # 调用下载

获得下载网址:

然后我们打开图片,通过控制台,可以得到我下图的画面:


这里注意一点,我们获取的是src里面的图片网址,这个质量更高一点,便于我们修改画质,这里使用到了线程池和Image的使用,简单使用起来不是很难。

代码如下:

def image_down(title, page_url, headers):  # 下载图片if not os.path.exists(title + '//'):os.mkdir(title + '//')os.chdir(title + '//')else:os.chdir(title + '//')for i, j in enumerate(page_url):  # 遍历第一页的图表列表r = requests.get(j, headers=headers)  # 请求这个图片网址if r.status_code == 200:r.encoding = r.apparent_encoding  # 修改编码html = etree.HTML(r.text)html = etree.tostring(html)html = etree.fromstring(html)  # 以上搭建xpath对象url = html.xpath(r'//a[@id="img"]/img/@src')name = html.xpath(r'//a[@id="img"]/img/@title')rr = requests.get('http://pic.netbian.com' + ''.join(url), headers=headers)if rr.status_code == 200:  # 请求下载图片网址rr.encoding = rr.apparent_encoding  # 修改编码with open(''.join(name) + '.png', 'wb') as fw:fw.write(rr.content)img = Image.open(''.join(name) + '.png')img = img.resize((4000, 2000), Image.ANTIALIAS)  # 改变大小 抗锯齿# print(img.size)img.save(''.join(name) + '.png', quality=95)  # 质量分数 95print(f'{title} 中第 {i + 1} 张下载完成!')else:print('错误啦')def pool_down(title, page_url, headers):  # 线程下载# print(title, len(page_url))path = 'D://彼岸图库//'# 创建总的文件夹if not os.path.exists(path):os.mkdir(path)os.chdir(path)else:os.chdir(path)#  创建一个多线程下载pool = Pool(6)  # 一次6下if len(page_url) > 2:  # 如果是其他网址for i in page_url:pool.apply(image_down, args=(title, i, headers))elif len(page_url) == 1:  # 如果是第一页pool.apply(image_down, args=(title, page_url, headers))  # 调用线程池pool.close()pool.join()

项目经验:

全部的代码我差不多全部给出了,为了让你们身体健康,我还是希望大家可以自行的编写一下主函数,主函数很简单的,就是简单的调用,参数我已经都给了,体验一下编程的快乐,这样左右手就很充实啦!

我对爬虫的理解不在于代码多难实现,而是如何分析网站,好的分析,绝对事半功倍!

这一次项目,因为是静态网址,没有遇到多少坑坑洼洼,都是小毛病,我就不提出来博取幸苦费用了。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(文末获取!)

温馨提示:篇幅有限,已打包文件夹,获取方式在“文末”!!!

二、Python必备开发工具

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、Python练习题

检查学习结果。

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Python资料、技术、课程、解答、咨询也可以直接点击下面名片,添加官方客服斯琪

爬虫抓图2022年全网最新方法,这一次终于是4k高清美图相关推荐

  1. Python 网络爬虫:爬取4K高清美图

    爬取4K高清美图 这篇爬虫主要是用来爬取网站高清4K图片,这也是笔者学初学爬虫的时候最先写一个的爬虫脚本,现在回过头来重新梳理一下,也算是对从前知识的一个总结,希望对大家有所帮助! 文章目录 爬取4K ...

  2. 爬虫抓图全网最新方法分享,爬取轻松爬终极4K高清美图?

    都2020年了,爬虫党还在为了图片的下载质量烦恼吗?还是只会下载JPG图片?那我有一种另类方式可以帮助你真正的白嫖高质量图片,肝了一个礼拜的干货,绝对能改变你对爬虫的看法和思考,原来爬虫这么有趣,也不 ...

  3. 爬虫百度百万高清美图源代码

    @T爬虫百度百万高清美图源代码OC #! -- coding: utf-8 -- Date:2020-09-20 16:52 USER:gordon_lu 使用正则表达式 删选指定的 URL 链接. ...

  4. python批量读取图片并批量保存_Python爬虫:批量抓取花瓣网高清美图并保存

    原标题:Python爬虫:批量抓取花瓣网高清美图并保存 昨天看到了不错的图片分享网--花瓣,里面的图片质量还不错,所以利用selenium+xpath我把它的妹子的栏目下爬取了下来,以图片栏目名称给文 ...

  5. 【彼岸美图】二十行代码下载上千张高清美图壁纸【python爬虫】

    小白也能看懂的python爬虫,从零开始爬彼岸图网壁纸美图 你是否有过以下烦恼: 想找壁纸却找不到 找到的壁纸清晰度都不高? 下载图片太麻烦? 现在,你将可以用简简单单二十行代码解决这一切烦恼,还不赶 ...

  6. python画美图_Python爬虫下手,就得从高清美图开始!

    写在前面 前几天玩游戏时,lol盒子右下角有条广告, 广告大概这个样子 咦,小姐姐,还有cosplay,点进去看看. 哇,发现一个好玩的网站,好多漂亮的妹子,页面打开很流畅,点开后有的浏览页面还有好听 ...

  7. Python爬虫下手,就得从高清美图开始!

    写在前面 前几天玩游戏时,lol盒子右下角有条广告, 广告大概这个样子 咦,小姐姐,还有cosplay,点进去看看. 哇,发现一个好玩的网站,好多漂亮的妹子,页面打开很流畅,点开后有的浏览页面还有好听 ...

  8. python宣传图片_Python爬虫,高清美图我全都要!爬取你想要的,嘿嘿嘿

    select = 'div#main div.list ul li a' imgUrls = screen(url, select) 通过这两行代码获取的列表中的值,形如此:星空 女孩 观望 唯美夜景 ...

  9. 别人用钱,而我用python爬虫爬取了一年的4K高清壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 爬虫是什么? 网络爬虫,也叫网络蜘蛛(Web Spider).它根据网页地 ...

  10. 全网最细------爬取4k高清大图

    本次案例将教大家免费爬取4k高清大图,即使你是爬虫新手,也可以食用本次文章实现你的免费下载梦,话不多说,先看效果 网站视图: 看到这些图片你是否怦然心动,跟着我一起看下去. 一.思路分析 首先最基本的 ...

最新文章

  1. 【原创 HadoopSpark 动手实践 1】Hadoop2.7.3 安装部署实践
  2. 长波通信、中波通信、短波通信、超短波通信与微波通信介绍
  3. 【响应式Web前端设计】:link、:hover、:active和:visited的区别
  4. 数据中心运营之4P标准化运维规程
  5. Attachment assignment block里选择的文件是如何传到Netweaver服务器的
  6. Javascript高级程序设计第二版第七章匿名函数--笔记
  7. 设计模式笔记 16. Mediator 中介者模式(行为型模式)
  8. Kinect+OpenNI学习笔记之13(Kinect驱动类,OpenCV显示类和手部预分割类的设计)
  9. ESXI NUMA node 1 has no memory..
  10. 跟着波哥学安卓之HelloKitty
  11. 解决可视化界面的时候灰屏【已解决】
  12. 计算机科班Java开发好书推荐
  13. StoneDB 团队成员与 MySQL 之父 Monty 会面,共话未来数据库形态
  14. 已经提了离职,还有一周就走,公司突然把我移出企业微信,没法考勤打卡, 还要继续上班吗?...
  15. win10无线投屏_智能电视多屏互动 如何将电脑投屏到电视?
  16. 环境配置 | ubuntun16.04下卸载matlab
  17. 由MAVEN入手浅谈项目构建与管理
  18. Mathcad的数组使用
  19. 西部数码服务器未续费,域名到期了,如何续费?
  20. 一、 软件危机和软件工程

热门文章

  1. 建筑工地使用的人脸识别门禁实名制管理系统是什么
  2. scrapy爬取阳光政务投诉
  3. 低代码开发之开源数据可视化分析平台datagear
  4. 如何根据身份证号码辨别性别
  5. TortoiseGit的Reversion Graph图标颜色代表意义
  6. 混沌数学之Henon吸引子
  7. 费氏数列(c/python)
  8. MySQL的开发技巧2
  9. 解决Mac系统读写NTFS格式移动硬盘
  10. 怎么获取论文所在期刊的电子版封面及目录