前文

  • 街上四百八十度,多少熟人在其中。 远上香山石径斜,白云深处没有雨。
  • 乘风归去,天热且长。 夏至时节太阳大,路上行人欲断魂。
  • 桃花潭水深千尺,不及空调对你情。 千树万树梨花开,不如一夜有空调。
  • 知了不睡觉,处处是熟人。 举头望烈日,低头思空调。
  • 我们日当午,汗滴禾下土。 太阳空中照,游子身上湿。

虽然夏天已经结束了但是这天气还是热的让人窒息,40度的高温。

说好的秋天的第一杯奶茶,这是假的......what?

这鬼天气,更应该带大家”清凉一下“!你说是不是!

异口同声:”对的 对的 快上干货”

搞错了,再来!

正文

动漫妹子图程序:

爬取网站为触站:使用requests库请求网页内容,使用BeautifulSoup4解析网页,最后使用PIL库将webp格式的图片转化为更为常见的png格式图片。

观察网页结构

首先选择想要获取的图片类型,这里已女孩子为例,当然大家也可以选择自由选择的哈。像黑丝袜、魅惑的大腿、白丝........

​​​​​

进入女孩子标签页面,观察页面链接,爬取多个页面,查看第2页、第3页分别链接为:

https://www.huashi6.com/tags/161?p=2
https://www.huashi6.com/tags/161?p=3

可以看出,不同页面网址仅改变了页面数字,因此可以构造如下模式,并使用循环,爬取所有页面:

url_pattern = "https://www.huashi6.com/tags/161?p={}" for i in range(1, 20): url = url_pattern.format(i)

接下来,在爬取网页前,使用浏览器“开发者工具”,观察网页结构。首先尝试定位图片元素:

​​

需要注意的是,在请求页面时,可以在构造请求头时,添加'Cookie'键值,但是没有此键值也能够运行。

headers = { 'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0', # 根据自己的情况修改Cookie值 #'Cookie':'' } url_pattern = "https://www.huashi6.com/tags/161" response = requests.get(url=url, headers=headers) 

页面解析

使用beautifulsoup解析页面,获取JS中所需数据:

results = soup.find_all('script')[1] 

为了能够使用re解析获取内容,需要将内容转换为字符串:

image_dirty = str(results)

接下来构造正则表达式获取图片地址:

pattern = re.compile(item, re.I|re.M)

然后查找所有的图片地址:

result_list = pattern.findall(image_dirty) 

为了方便获取所需字段,构造解析函数

def analysis(item,results): pattern = re.compile(item, re.I|re.M) result_list = pattern.findall(results) return result_list

打印获取的图片地址:

urls = analysis(r'"path":"(.*?)"', image_dirty) urls[0:1] 

发现一堆奇怪的字符:

'images\\u002Fresource\\u002F2021\\u002F06\\u002F20\\u002F906h89635p0.jpg', 

这是由于网页编码的原因造成的,由于一开始使用utf-8方式解码网页,并不能解码Unicode

response.encoding = 'utf-8' response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') 

因此虽然可以通过以下方式获取原始地址:

url = 'images\u002Fresource\u002F2021\u002F05\u002F22\u002F90h013034p0.jpg' decodeunichars = url.encode('utf-8').decode('unicode-escape') 

但是我们可以通过response.encoding = 'unicode-escape'进行更简单的解码,缺点是网页的许多中文字符会变成乱码,但是字不重要不是么?看图!

为了下载图片,首先创建图片保存路径:

# 创建图片保存路径 

if not os.path.exists(webp_file): os.makedirs(webp_file, exist_ok=True) if not os.path.exists(png_file): os.makedirs(png_file, exist_ok=True) 

图片下载

当我们使用另存为选项时,发现格式为webp,但是上述获取的图片地址为jpgpng,如果直接存储为jpgpng格式,会导致格式错误。

​​因此需要重新构建webp格式的文件名:

name = img.split('/')[-1] name = name.split('.')[0] name_webp = name + '.webp' 

由于获取的图片地址并不完整,需要添加网站主页来构建图片地址:

from urllib.request import urljoin domain = 'https://img2.huashi6.com' img_url = urljoin(domain,img) 

接下来就是下载图片了:

r = requests.get(img_url,headers=headers) if r.status_code == 200: with open(name_webp, 'wb') as f: f.write(r.content) 

格式转换

最后,由于得到的图片是webp格式的,如果希望得到更加常见的png格式,需要使用PIL库进行转换:

image_wepb = Image.open(name_webp) image_wepb.save(name_png) 

​​

结尾

好了!需要完整的教学图片素材、源码已经全部打包放在群里了。

有问题在群里也可以互相解答讨论,遇到问题比自己想几天都想不出来不如别人的三言两语来的醍醐灌顶哦。

小编完整的文章项目代码可以来小白解答学习的Python交流圈:959755565 大家一起学习、成长,Figthing!!

如文章对你有帮助,“关注点赞”和评论是对我最大的支持!!

降暑小程序:40°高温,Python带你“清凉一夏”!!!!相关推荐

  1. 微信小程序仿系统自带下拉刷新效果

    微信小程序仿系统自带下拉刷新效果 前言 思路分析 实现 尾巴 前言 看到标题也许有人会说:系统不是已经自带了下拉刷新,你去仿照系统的下拉刷新是不是吃多了没事干?其实真相并不是这样的.在微信小程序手把手 ...

  2. 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画

    微信改版,加星标不迷路! 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画 作者:neozhaoliang 本文要介绍的是我写的一个有趣的小程序,一个脱离了低级趣味的程序,一个有益于广 ...

  3. [转]mpvue中的小程序调用系统自带查看图片的功能

    mpvue中的小程序调用系统自带查看图片的功能 这里举个栗子: <template><div class="keting"><div class=&q ...

  4. thinkphp三级分销小程序源码_山东谷道微信小程序商城源码带后台 公众号平台三级分销系统...

    山东谷道微信小程序商城源码带后台 公众号平台三级分销系统 那么微信二级分销系统与微信三级分销系统到底有什么区别和联系呢?为什么改了个数字地位就天差地别? 1.微信分销模式等级的区别 用简洁的话来说,微 ...

  5. 舔狗日记-土味情话-每日一言三合一小程序源码下载带安装教程

    舔狗日记-土味情话-每日一言三合一小程序源码下载带安装教程 支持扩展更多小程序 1.去微信公众平台申请小程序并填好资料(https://mp.weixin.qq.com) 2.下载微信开发者工具 3. ...

  6. python语言小程序-微信小程序可以用Python语言编写吗?

    Q: 微信小程序可以用Python语言编写吗? A: 小程序一般开发HTML.CSS.JS,需要后台开发就需要PHP,MySQL等了.你说的这种语言开发小程序不好使.如果你不想学更多,建议你找一家专业 ...

  7. 国庆头像小程序源码,带独立版后台同时可添加小程序跳转+流量主,所有改动均可后台添加+带搭建教程

    微信小程序实现国旗头像,国庆个性化头像 国庆头像小程序源码,带独立版后台同时可添加小程序跳转+流量主,所有改动均可后台添加+带搭建教程 快去挑选一个自己喜欢的国庆头像吧,只需简单两步即可制作自己专属国 ...

  8. (已更新)最新打卡抽奖助手小程序源码,带微信通知功能,去授权

    源码已经测试,去除授权 安装即可运营,微擎后端 1.首先安装微擎模块,上传服务器这个大家都知道,就不用过多解释了 2.配置 推荐 (服务器最低配置1h2g,域名需要备案且还需要设置ssl证书) Nig ...

  9. app小程序手机端Python爬虫实战12实现自动化退出考研帮app并清空缓存

    app小程序手机端Python爬虫实战11实现自动化退出考研帮app并清空缓存 一.捕获安卓吐司的消息 结束安卓的吐司操作: while True:if self.d.toast.get_messag ...

最新文章

  1. 使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?
  2. windows2008系统启动weblogic报错
  3. 8个可以提高数据科学工作效率、节省宝贵时间的Python库
  4. Java并发编程高级篇(八):在执行器中取消任务
  5. 使用 Microsoft .NET Framework 精简版中的 MessageWindow 类
  6. 【原创】sharepoint webpart COPY部署的办法
  7. 腾讯云CentOS 7 上安装Nginx
  8. PHP实现加密的几种方式介绍
  9. Web测试中容易被忽略的Charset问题
  10. 车牌号专用键盘设计和正则验证
  11. 如何在opengl用代码绘制英文_如何用AIPS直接绘制服装款式图(线稿)
  12. 【系统架构师修炼之道】(8):绪论——DoDAF框架
  13. 知识点九:散列表(中)
  14. xs2鸿蒙系统,华为Mate XS2来了,搭载麒麟9000,依旧安卓10版本
  15. 360断网急救箱 dns服务器未响应,发现DNS服务异常,用360断网急救箱修复后过一段时间又复发。怎么办?...
  16. oracle 3135,oracle的imp问题。
  17. adams数据导出matlab,adams数据导入matlab
  18. 【计算机网络】Web应用的安全问题——概述
  19. 阮一峰访谈问题有奖征集(图灵访谈)
  20. DQL:数据库查询语句

热门文章

  1. DNS、Http和Https
  2. uva 12325(宝箱, 枚举问题);
  3. 神经网络种类及应用领域,常用的神经网络有哪些
  4. python模块之 paramiko
  5. TLS/SSL 协议详解(17) Certificate verify
  6. 学习记录 重叠网络权威知识——多尺度复杂网络社区发现的链接
  7. Python程序使用os.system()方法调用exe程序导致主程序进程无响应
  8. linux SVN安装及配置图解教程
  9. _getch() 和 getch() 及 _T()
  10. supserset权限管理