Python爬虫实战-批量爬取美女图片网下载图片

大家好,我是python222小锋老师。

近日锋哥又卷了一波Python实战课程-批量爬取美女图片网下载图片,主要是巩固下Python爬虫基础

视频版教程:

Python爬虫实战-批量爬取美女图片网下载图片 视频教程_哔哩哔哩_bilibiliPython爬虫实战-批量爬取美女图片网下载图片 视频教程作者:小锋老师官网:www.python222.com本课程旨在让大家在网站Python爬虫的基础上,实战巩固Python爬虫技术后期会继续推出进阶,高级课程,敬请期待。, 视频播放量 354、弹幕量 1、点赞数 20、投硬币枚数 8、收藏人数 21、转发人数 5, 视频作者 java1234官方, 作者简介 公众号:java1234 微信:java9266,相关视频:Python爬虫实战-批量爬取下载网易云音乐,爬虫学得好!牢饭吃到饱...全网最全爬虫JS逆向案例!企业级爬虫逆向实战(逆向各种加密、参数、验证码、滑块、算法)建议立刻收藏!,2024 一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 【无废话版】,Gateway微服务网关视频教程(无废话版),Nacos视频教程(无废话版),打造前后端分离 权限系统 基于SpringBoot2+SpringSecurity+Vue3.2+Element Plus 视频教程 (火爆连载更新中..),2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...,微信小程序(java后端无废话版)视频教程,Java8 Lambda表达式视频教程(无废话版),Docker快速手上视频教程(无废话版)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1ue411X7JU/

爬虫目标网站:

https://pic.netbian.com/4kmeinv/

经过分析,第二页,第二页的规律是:

https://pic.netbian.com/4kmeinv/index_N.html

复杂问题简单化:先爬取首页,然后再进行多页爬虫代码的实现。

通过开发者工具分析

img的路径是 ul.clearfix li a img

爬虫三步骤,

1,根据请求url地址获取网页源码,用requests库

2,通过bs4解析源码获取需要的数据

3,通过数据处理我们的资源,我们这里是通过图片路径下载到本地

所以我们实现首页图片下载的源码参考如下:具体代码分析,可以学习下帖子开头的视频教程

"""
    爬取目标:https://pic.netbian.com/ 彼岸图网
    首页地址:
    https://pic.netbian.com/4kmeinv/
    第N页
    https://pic.netbian.com/4kmeinv/index_N.html
    https://pic.netbian.com/uploads/allimg/231101/012250-16987729706d69.jpg
    作者:小锋老师
    官网:www.python222.com
"""
import os.path

import requests
from bs4 import BeautifulSoup

url = "https://pic.netbian.com/4kmeinv/"

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

# 请求网页
response = requests.get(url=url, headers=headers)
response.encoding = "gbk"
# print(response.text)

# 实例化soup
soup = BeautifulSoup(response.text, "lxml")
# 获取所有图片
img_list = soup.select("ul.clearfix li a img")
print(img_list)


def download_img(src):
    """
        下载图片
    :param src: 图片路径
    :return:
    """
    # 获取图片名称
    filename = os.path.basename(src)
    print(filename)
    # 下载图片
    try:
        with open(f"./img/{filename}", "wb") as file:
            file.write(requests.get("https://pic.netbian.com" + src).content)
    except:
        print(src, "下载异常")


for img in img_list:
    print(img["src"])
    download_img(img["src"])

运行代码,一页数据20个。

实现多页的下载的话,我们肯定需要通过遍历所有url,然后实现批次下载;那么对于抓取网页,和解析网页,我们需要进行封装,那才方便调用。

def crawl_html(url):
    """
        解析网页
    :param url: 请求地址
    :return: 解析后的网页源码
    """
    # 请求网页
    response = requests.get(url=url, headers=headers)
    response.encoding = "gbk"
    return response.text

def parse_html(html):
    # 实例化soup
    soup = BeautifulSoup(html, "lxml")
    # 获取所有图片
    img_list = soup.select("ul.clearfix li a img")
    print(img_list)
    for img in img_list:
        print(img["src"])
        download_img(img["src"])

完整源码参考:具体代码分析,可以学习下帖子开头的视频教程

"""
    爬取目标:https://pic.netbian.com/ 彼岸图网
    首页地址:
    https://pic.netbian.com/4kmeinv/
    第N页
    https://pic.netbian.com/4kmeinv/index_N.html
    https://pic.netbian.com/uploads/allimg/231101/012250-16987729706d69.jpg
    作者:小锋老师
    官网:www.python222.com
"""
import os.path

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}


def crawl_html(url):
    """
        解析网页
    :param url: 请求地址
    :return: 解析后的网页源码
    """
    # 请求网页
    response = requests.get(url=url, headers=headers)
    response.encoding = "gbk"
    return response.text


def download_img(src):
    """
        下载图片
    :param src: 图片路径
    :return:
    """
    # 获取图片名称
    filename = os.path.basename(src)
    print(filename)
    # 下载图片
    try:
        with open(f"./img/{filename}", "wb") as file:
            file.write(requests.get("https://pic.netbian.com" + src).content)
    except:
        print(src, "下载异常")


def parse_html(html):
    # 实例化soup
    soup = BeautifulSoup(html, "lxml")
    # 获取所有图片
    img_list = soup.select("ul.clearfix li a img")
    print(img_list)
    for img in img_list:
        print(img["src"])
        download_img(img["src"])


# # 第一页
# url = "https://pic.netbian.com/4kmeinv/"
# parse_html(crawl_html(url))
# # 第二页到第七页
# for i in range(2, 8):
#     parse_html(crawl_html(f"https://pic.netbian.com/4kmeinv/index_{i}.html"))

urls = ["https://pic.netbian.com/4kmeinv/"] + [
    f"https://pic.netbian.com/4kmeinv/index_{i}.html"
    for i in range(2, 8)
]
print(urls)
for url in urls:
    parse_html(crawl_html(url))

运行下载,正好7页的图片,140个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/124722.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

兴达易控232转profinet在搅拌站使用案例配置案例

该搅拌站所采用的是双行星动力搅拌桨混合机,借助兴达易控232转profinet网关(XD-PNR200)与PLC和变频器进行通信,从而实现对变频器的精确控制,大大提升了搅拌过程的稳定性和效率。 这一方案还具备高度的灵活性和可扩展性,使得搅拌站…

HashMap源码分析(一)

存储结构 说明:本次讲解的HashMap是jdk1.8中的实现,其他版本可能有差异 内部是由Node节点数组组成,Node节点之间又由链表或红黑树组成。 图是网上找的,实在不想画 属性介绍 //存储数据的数组,初次使用时初始化&…

CocosCreator让一个物体跟随鼠标移动(两种方式 本地坐标系和世界坐标系)

在 Cocos Creator 3.x 游戏运行时显示的画布大小就是屏幕区域,屏幕坐标是从画布的左下角为原点开始计算 在 Creator 3.x 里,屏幕和 UI 是完全区分开的,用户可以在没有 UI 的情况下点击屏幕获取触点信息。因此,获取屏幕触点&#…

mac M2 anaconda 解决装不了python3.7

今天发现一个很奇怪的问题 但是我一换成 conda create -n DCA python3.8.12就是成功的 这个就很奇怪, 解决如下 https://towardsdatascience.com/how-to-manage-conda-environments-on-an-apple-silicon-m1-mac-1e29cb3bad12 998 conda search pythonconda search python …

半导体(芯片)制造工艺流程简单说

半导体行业是国民经济支柱性行业之一,是信息技术产业的重要组成部分,是支撑经济社会发展和保障国家安全的战略性、基础性和先导性产业,其发展程度是衡量一个国家科技发展水平的核心指标之一,属于国家高度重视和鼓励发展的行业。 …

ant design pro of vue怎么使用阿里iconfont

一 使用离线iconfont 首先需要生成图所有图标对应的js文件。如下图所示,将生成的js代码复制,在项目中创建一个js文件,将代码粘贴进去。这里我将js文件放在了src/assets/iconfont下面 然后,在main.js中引入文件,并进…

Java代码是怎么运行的?

Java代码是怎么运行的? 运行流程 将Java程序转换成Java虚拟机所能识别的指令序列,也称Java字节码。之所以这么取名,是因为Java字节码指令的操作码(opcode)被固定为一个字节。 Java虚拟机可以由硬件实现,…

IP协议相关技术

文章目录 IP协议相关技术仅凭IP无法完成通信DNSARP IP协议相关技术 仅凭IP无法完成通信 人们在上网的时候其实很少直接输入某个具体的IP地址。 在访问Web站点和发送、接收电子邮件时,我们通常会直接输入Web网站的地址或电子邮件地址等那些由应用层提供的地址&…

麒麟v10 安装jenkins

1.想安装哪个版本? https://pkg.jenkins.io/redhat-stable/ 我们查看我们想要哪个版本: 4年前安装的是 Jenkins2.279 版本 现在在docker 上安装的是Version 2.425 版本 2.碰到到的问题 1.安装老版本的Jenkins,会出现安装的插件不兼容&…

viple入门(四)

(1)行打印 主要用于在运行窗口中显示数据,打印完成后,自动换行。 注意事项:不可同时打印两个数据,例如 解决方案1:使用或并,使得每次进入行打印的数据只有一个,缺点&am…

文件管理技巧:如何利用文件名关键字进行整理

在日常生活和工作中,我们经常需要处理大量的文件,这些文件可能包含各种类型的信息,如文本、图像、视频、音频等。如何有效地管理和整理这些文件,以便我们能够快速找到所需的文件,是一个非常重要的问题。本文将介绍一种…

Linux shell编程学习笔记22: () $() (()) 的用法小结

最近学习Linux Shell编程,对 () (()) [] [[]]等符号的用法还是有点分不太清楚,于是决定再梳理一下。今天先整理 () $() (()) 的用法。 1 单小括号() 1.1 子shell(命令组) 括号中的命令将会新开一个子shell顺序执行,所…

用vite搭建一个vue3 + ts项目

搭建项目 参考连接https://www.jianshu.com/p/1ce93c7e15a0 练手项目参考 https://www.xuexiluxian.cn/ 1.安装pina vue3 pinia的安装和使用 2.安装router npm install vue-router -S Vue3: Vue-router路由的使用

什么是跨境电商独立站?有什么优势和劣势?

你是否有过这样的经历:当你在网上浏览一些商品时,发现有些网站的域名很奇怪,比如.com、.net、.co等,而且网站的界面和设计也和国内的电商平台不太一样。 你可能会好奇,这些网站是什么?它们是怎么做的&…

学习笔记|Pearson皮尔逊相关系数|Spearman斯皮尔曼相关系数|和Kendall肯德尔tau-b相关系数|分析流程|-SPSS中双变量相关性分析系数

目录 学习目的软件版本原始文档基础概念皮尔逊相关系数基本假设(适用条件):系数的范围及意义实例1. 读数据:2.正态性检验:3.异常值检验(体重):4.分析: 斯皮尔曼相关系数基…

Git的入门详细教程

🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​ 🌟在这里,我要推荐给大家我的专栏《git》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这…

企业级,搭建接口自动化测试框架思路分析,8年测试老鸟整理...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 在选择接口测试自…

Vue3 学习笔记

vue3 官网:简介 | Vue.js (vuejs.org) 1. 环境搭建与启动 npm create vuelatest 这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具 之后,你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示: ✔ …

学习笔记|SPSS|描述变量|按照3倍标准差剔除异常值|标准化值另存为变量|剔除个案|Zscore|箱图|Zscore取值范围

目录 学习目的软件版本原始文档概述服从正态分布-按照3倍标准差剔除异常值读数据数据概览描述变量 正态性检验异常值检验及剔除 非正态分布-根据Zscore取值范围确定基础数据数据概览正态性检验Tips:箱图圆圈的含义 异常值检验及剔除描述变量,并将标准化值…

C语言C位出道心法(三):共用体|枚举

C语言C位出道心法(一):基础语法 C语言C位出道心法(二):结构体|结构体指针|链表 一: C语言共用体数据类型认知 二:C语言枚举基本数据类型认知 忙着去耍帅,后期补充完整.............