生活这么无聊,保存点小姐姐的图片来点调料吧

简介: 生活这么无聊,保存点小姐姐的图片来点调料吧

文章目录

1. 简介

使用的技术栈 : python3, re, BeautifulSoup

目标网站: https://www.umei.net/p/gaoqing/cn/

在21年6-11摸鱼时间补充一份【多线程版本】,学习愉快!!

免责声明:仅用于学习,请勿商用!!!!

2. 开始行动

2.1 步骤

  1. 获取html
  2. 数据清洗(获取图片标签)
  3. 获取图片标签里面的src
  4. 发起请求并保存图片

2.2 实现代码

import requests
import re
from bs4 import BeautifulSoup
url = 'https://www.umei.net/p/gaoqing/cn/'
r = requests.get(url)
# with open('./meinv.html','wb+') as f:
#     f.write(r.content)
if(r.status_code == 200 ):
    imgs = []
    soup = BeautifulSoup(r.content, 'html5lib')
    img_list = soup.select('.TypeBigPics img ')
    for i in img_list:
        # print(i)
        res = re.search('src="(.*?)"', str(i) , re.M | re.I)
        imgs.append( str (res.group(1)) )
    for i,k in enumerate (imgs):
        # print(i,type(k))
        ans = requests.get(k)
        if (ans.status_code == 200):
            with open(str (i) +'.jpg', 'wb+') as f:
                f.write(ans.content)

2.3 成果

2.4 成果分析

  • 虽然成功拿到了图片,但是图片的清晰度不够,可进一步优化

2.5 优化

  • 优化分析

通过分析可知:我们可以通过点击图片外面的a标签获取到图片大图

2.6 代码优化

import requests
import re
from bs4 import BeautifulSoup
url = 'https://www.umei.net/p/gaoqing/cn/'
r = requests.get(url)
# with open('./meinv.html','wb+') as f:
#     f.write(r.content)
if(r.status_code == 200 ):
    imgs = []
    soup = BeautifulSoup(r.content, 'html5lib')
    # 获取img外面的a标签
    aList = soup.select('.TypeBigPics')
    for item in aList:
        obj = re.search('.*?\/cn\/(.*?)".*', str(item), re.M | re.I )
        imgs.append( str( obj.group(1)) )
    ans_imgs = []
    for i,k in enumerate(imgs):
        # print(str(url + k))
        ans = requests.get(str(url+k))
        if(ans.status_code==200):
            soup1 = BeautifulSoup(ans.content, 'html5lib')
            imgBody = soup1.select('.ImageBody img')
            # print(imgBody)
            # 获取大图的src
            obj = re.search('.*?src="(.*?)"', str(imgBody), re.M | re.I )
            ans_imgs.append(  obj.group(1))
    # print(ans_imgs)
    # 保存大图
    for i,k in enumerate(ans_imgs):
        b = requests.get(str(k))
        if(b.status_code==200):
            with open('./'+str(i)+'.jpg','wb+') as f:
                f.write(b.content)

2.7 成果

相关文章
|
JavaScript
JS保留4位小数(合集)
JS保留4位小数(合集)
主机管理系统-五大免费主机管理系统分享
在服务器运维过程中,主机管理系统有着极其重要的作用,不仅能减轻管理员的工作量、加强规范化管理,优秀的主机系统还能提升服务器安全。虽然现在国内有不少收费版主机系统,但是对于需要有主机管理系统而要求又不是很高的用户来说,能省则省总是好事。
|
消息中间件 存储 网络协议
RabbitMQ的使用
这篇文章详细介绍了RabbitMQ的消息中间件概念、核心组件、通过Docker的安装方法和基本使用步骤,并展示了如何在Spring Boot中整合RabbitMQ,包括依赖配置、消息的发送和接收示例。
RabbitMQ的使用
|
消息中间件 存储 监控
解析RocketMQ:高性能分布式消息队列的原理与应用
RocketMQ是阿里开源的高性能分布式消息队列,具备低延迟、高吞吐和高可靠性,广泛应用于电商、金融等领域。其核心概念包括Topic、Producer、Consumer、Message和Name Server/Broker。RocketMQ支持异步通信、系统解耦、异步处理和流量削峰。关键特性有分布式架构、顺序消息、高可用性设计和消息事务。提供发布/订阅和点对点模型,以及消息过滤功能。通过集群模式、存储方式、发送和消费方式的选择进行性能优化。RocketMQ易于部署,可与Spring集成,并与Kafka等系统对比各有优势,拥有丰富的生态系统。
1363 4
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
212 4
|
算法 数据可视化 安全
R语言Kmeans聚类、PAM、DBSCAN、AGNES、FDP、PSO粒子群聚类分析iris数据结果可视化比较
R语言Kmeans聚类、PAM、DBSCAN、AGNES、FDP、PSO粒子群聚类分析iris数据结果可视化比较
|
监控 前端开发 JavaScript
6个顶级SpringCloud微服务开源项目,企业开发必备!
6个顶级SpringCloud微服务开源项目,企业开发必备!
5160 0
6个顶级SpringCloud微服务开源项目,企业开发必备!
|
运维 监控 负载均衡
云原生架构下的微服务治理实践
【6月更文挑战第28天】在数字化转型的浪潮中,云原生技术以其高效、灵活的特性成为企业IT架构升级的首选。本文将深入探讨在云原生环境下,如何通过微服务治理提升系统的可维护性、可扩展性和韧性。我们将从服务发现与注册、配置管理、服务监控、路由与负载均衡、以及故障处理等方面出发,结合具体案例,为读者提供一套完整的微服务治理策略,旨在帮助开发和运维团队更好地管理和优化他们的云原生应用。
|
存储 编译器 程序员
c++数据类型
c++数据类型
80 2
|
域名解析 存储 网络协议
七牛云创建存储空间并绑定自定义域名-https协议(申请ssl证书)
七牛云创建存储空间并绑定自定义域名-https协议(申请ssl证书)
1182 0