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

前文

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

虽然夏天已经结束了但是这天气还是热的让人窒息,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'进行更简单的解码,缺点是网页的许多中文字符会变成乱码,但是字不重要不是么?看图!

çå¤çæ¸å-Broseeleçä½å

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

# 创建图片保存路径 

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!!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾木子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值