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

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

.

技术分析:

爬虫还用JPG?

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


技术关键代码:

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

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

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

项目技术:


获取分组网址和标题:

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)  # 下载剩下的所有页

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


获取图片网址:

代码:

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()

项目经验:

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

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

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

  • 总的来说,你们看了觉得有帮助的,给个关注和支持,就是对我最大的帮助,我会加油,你们也是!

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

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

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

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

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

  3. 运用python爬取彼岸桌面所有关键字高清壁纸

    运用python爬取彼岸桌面所有关键字高清壁纸 第一次在csdn写博客, 个人技术并不成熟, 还是学生, 高手轻喷菜鸡勿啄 就是心血来潮想要换桌面壁纸, 存在一个文件夹自动更换, 但是从网站上一个一个 ...

  4. 一键爬取王者荣耀全皮肤高清图片【方法一】

    文章目录 前言 一.爬虫是什么? 二.使用步骤 1.引入库 2.访问的URL 3.爬取思路 三.皮肤URL(需要手动找出) 完整代码 四.效果展示 总结 前言 相信很多小伙伴们都喜欢玩王者荣耀这款MO ...

  5. scrapy图片爬取(爬取站长素材中的高清图片)

    - ImagesPipeline:-只需要将img的src的属性值进行解析,提交到管道,管道就会对图片的src进行请求发送获取图片的二次请求 -需求:爬取站长素材中的高清图片-使用流程:-数据解析(图 ...

  6. Python零基础之爬取王者荣耀官方网站高清壁纸(普通版)

    Python零基础之爬取王者荣耀官方网站高清壁纸 目标: 分析过程: 1. 确定目标url 2. 解决url解析问题 3. 图片下载解析 4. 多页面的处理 代码示例 需要注意的问题: 目标: 1.下 ...

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

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

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

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

  9. 一键爬取王者荣耀全皮肤高清图片【方法二】

    爬取王者荣耀官网皮肤[爬虫] 上次我们讲了爬虫的定义以及爬取王者荣耀皮肤的思路. 今天我们换一种方式来爬取同样的内容.大体上思路和方法一相同. 方法一传送门:方法一 方法二 # 网址:https:// ...

最新文章

  1. 多云战略未来五大趋势分析,必看!
  2. 【漏洞实战】从信息泄露到内网滲透
  3. bzoj2820: YY的GCD
  4. GDCM:gdcm::ServiceClassUser的测试程序
  5. mysql的单页应用框架搭建_采用vue+webpack构建的单页应用——私人博客MintloG诞生记...
  6. mysql暂停触发器_mysql如何临时禁用触发器
  7. c语言自学门槛,初学C语言的人最常问的几个问题
  8. Python入门--流程控制语句continue
  9. JS实现将文件和base64的相互转换
  10. 小米8se账号锁_mi8 8SE 小米8解帐户锁 解ID锁 激活锁 9008刷机包 卡刷包刷机资料...
  11. 韦东山freeRTOS系列教程之【第一章】FreeRTOS概述与体验
  12. python的数组下标_python数组下标
  13. VMware Workstation虚拟机无法共享主机网络解决方法
  14. 创新工场投资经理:创业就是九死一生
  15. 2020对口高考计算机专业分数线,2020高考分数线(分数线及一分一段表)
  16. CeSi 进程集中管理部署
  17. AI修图市场潜力大,分析全方位
  18. 前端知识-CSS定位机制:标准流、浮动、定位
  19. Linux如何用命令创建文件和文件夹
  20. python汇率编程_python抓取汇率

热门文章

  1. js实现一键复制(可用于复制微信号)
  2. 【leetcode买卖股票系列问题】多次买卖/手续费/冻结期
  3. 解决因Docker网桥网段冲突导致访问不到容器问题
  4. 使用grafana监控mongodb
  5. 厉害了Word哥!阿里巴巴73款开源产品最全总结全景图
  6. Phoenix安装与两种方式使用
  7. # 时间 减去 多少小时 python
  8. 用keil打开的工程,里面的文件带黄色的小锁怎么办
  9. unity 登录不进去
  10. GBK UTF-8 ASCLL URL编码