首页 > 编程语言 >Python爬虫实战案例(爬取图片)

Python爬虫实战案例(爬取图片)

时间:2024-11-12 22:20:38浏览次数:3  
标签:img 获取 Python pic 爬虫 li 爬取 url 图片

爬取图片的信息

爬取图片与爬取文本内容相似,只是需要加上图片的url,并且在查找图片位置的时候需要带上图片的属性。

这里选取了一个4K高清的壁纸网站(彼岸壁纸https://pic.netbian.com)进行爬取。

具体步骤如下:

  • 第一步依然是进入这个页面,这个壁纸网站分为好几种类型的壁纸图片,点击一个你想要爬取的类型,然后按F12,从中获取URL请求方式(复制URL,会用到),这次就不用网页的"User-Agent’'了,用pycharm包中别人写好的。
    然后发送我们的请求并获取这个网页的数据
    在这里插入图片描述
# url
url = "https://pic.netbian.com/4kmeinv/"
# UA伪装 用下载好的库中别人写好的UA
head = {"User-Agent": fake_useragent.UserAgent().random}
# 发送请求
response = requests.get(url, headers=head)
# 获取想要的数据
res_text = response.text
  • 第二步打开元素栏,用左上角的寻找工具放在图片上,定位到元素栏中对应的标签,用数据分析的方法获取到图片信息。
    其实每一张图片的排放就好像是一个个列表,其所有的信息都储存在元素栏中的li标签中,我们想要获取多张照片,首先需要先将这些li标签都获取下来。
    在这里插入图片描述
# 数据解析 获取所有的li标签,并存放在li_list中
tree = etree.HTML(res_text)
li_list = tree.xpath("//div[@class='slist']/ul/li")
  • 第三步获取图片与获取文本内容不同的是,需要再获取图片的url,图片的url就在上图箭头所指的位置,但是这个仅仅只是图片在这个板块的位置,所以前面需要在前面加上这个壁纸网站的地址,这样获取的图片信息才是完整的,可以被打开。
    因为先前已经将存放图片信息的li标签都存放在了li_list中,所以我们就用for循环遍历这个列表,以便获取更多的图片信息。
 for li in li_list:
	# 图片的url
	img_url = "https://pic.netbian.com" + "".join(li.xpath("./a/img/@src"))
	# 发送请求
	img_response = requests.get(img_url, headers=head)
	# 获取想要的数据
	img_content = img_response.content
  • 第四步将获取到的图片存放在文件夹中
# pic_name = 0 这次的代码封装在函数中,将这个变量放在了函数外面,给获取的图片编号
# 将pic_name定义为全局变量,方便调用
global pic_name
    with open(f"./picLibbb/{pic_name}.jpg", "wb") as fp:
	    fp.write(img_content)
	pic_name += 1
  • 第五步为了获取更多的照片,因为每一页能展示的照片有限,所以我们需要for循环遍历每一页的网址;
    每一页的网址都只是在页面数量上的差别,所以可以遍历。

第一页的网址
在这里插入图片描述
第二页的网址

在这里插入图片描述
第三页的网址

在这里插入图片描述

url = "https://pic.netbian.com/4kmeinv/"
    request_pic(url)
    for i in range(1,10):
        next_url = f"https://pic.netbian.com/4kmeinv/index_{i}.html"
        request_pic(next_url)

完整代码:

# 获取图片数据
import os.path
import fake_useragent
import requests
from lxml import etree

# UA伪装
head = {"User-Agent": fake_useragent.UserAgent().random}

pic_name = 0
def request_pic(url):
    # 发送请求
    response = requests.get(url, headers=head)
    # 获取想要的数据
    res_text = response.text
    # 数据解析
    tree = etree.HTML(res_text)
    li_list = tree.xpath("//div[@class='slist']/ul/li")
    for li in li_list:
        # 图片的url
        img_url = "https://pic.netbian.com" + "".join(li.xpath("./a/img/@src"))
        # 发送请求
        img_response = requests.get(img_url, headers=head)
        # 获取想要的数据
        img_content = img_response.content
        global pic_name
        with open(f"./picLib/{pic_name}.jpg", "wb") as fp:
            fp.write(img_content)
        pic_name += 1

if __name__ == '__main__':
    # 创建存放照片的文件夹
    if not os.path.exists("./picLib"):
        os.mkdir("./picLib")
    # 网站的url
    url = "https://pic.netbian.com/4kdongman/"
    request_pic(url)
    for i in range(1,10):
        next_url = f"https://pic.netbian.com/4kmeinv/index_{i}.html"
        request_pic(next_url)

爬取后的效果如下:
在这里插入图片描述

标签:img,获取,Python,pic,爬虫,li,爬取,url,图片
From: https://blog.csdn.net/weixin_73504499/article/details/143648523

相关文章

  • 【Python爬虫实战】深入解锁 DrissionPage:ChromiumPage 自动化网页操作指南
      ......
  • Python模拟A卷实操题
    1.某机械公司生产两种产品。A的单件利润分别是100元,B的单件利润是150元。每种产品由三种材料构成,现给出每种材料的库存(库存小于100000),求利润最大的生产方案。输入说明:第一行给出生产每件A产品所需要的三种材料数量;第二行给出生产每件B产品所需要的三种材料数量;第三行给出三种......
  • Python模拟A卷选择题
    1.模块是构造程序的方式模块是Python中用来组织代码和功能的方式,可以将不同的功能分割到不同的模块中以便复用。2.每个Python程序文件都是一个模块在Python中,每个.py文件都可以看作是一个模块,可以被其他Python代码引入使用。3.可以使用import语句来引入模块import语句......
  • 【Python项目】基于Python高校学生学业预警系统
    技术简介:采用Python语言、Django框架、MYSQL数据库等实现。系统简介:管理员承担着教师的角色,管理员在该管理系统中能够对学生的信息进行维护和管理、对于学生的成绩进行查看和预警分析,能够对管理员自身的信息进行管理。学生、教师都会通过登录来实现高校学生学业预警系统的功能......
  • 【Python项目】基于深度学习的聊天机器人的设计与实现
    技术简介:采用Python语言、B/S框架、HTML技术、MYSQL数据库等实现。系统简介:系统的主要使用角色为普通用户和管理员用户,两者的功能几乎是一致的,但管理员用户比普通用户多了用户管理的功能,可以对系统内的用户进行管理。普通用户比管理员用户多了注册的功能,普通用户必须先经过注......
  • 爬虫案例-2345天气王历史天气获取
    爬虫案例-2345天气王历史天气获取1.项目简介本项目的目的是利用网络爬虫技术,在2345天气王网站中,获取重庆从2011年至2023年的历史天气数据,包括每日温度、降雨量等信息。通过数据的获取与清洗,我们能够更好地研究重庆的气候变化趋势,为相关分析提供基础数据支持。2.进入网......
  • 【Python学习】Python csv 数据处理实例——bilibili 视频播放量跟踪
    1.理论知识准备在Python中,处理CSV(Comma-SeparatedValues)文件非常常见,因为CSV是一种广泛使用的数据交换格式。Python标准库中的csv模块提供了读取和写入CSV文件的功能。以下是一些基本的使用方法。读取CSV文件首先,确保你的CSV文件是有效的,并且你知道其中数......
  • 【python基础收尾篇】python基础试卷 #试卷分析
     python基础篇收尾了,让我们给自己一个检测吧!(后文解析)python基础试卷一、选择题【15*1=15分】1. Python中的“深拷贝”与“浅拷贝”不同在于:A.深拷贝比浅拷贝执行速度快B.深拷贝允许修改原始对象,而浅拷贝不允许C.深拷贝创建对象的副本及其嵌套对象的副本......
  • 程序员必备的几款爬虫软件,搞定复杂数据抓取任务
    作为一名数据工程师,三天两头要采集数据,用过十几种爬虫软件,也用过Python爬虫库,还是建议新手使用现成的软件比较方便。这里推荐3款不错的自动化爬虫工具,八爪鱼、亮数据、WebScraper1.八爪鱼爬虫八爪鱼爬虫是一款功能强大的桌面端爬虫软件,主打可视化操作,即使是没有任何编......
  • 【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框
    哈喽,大家好,我是六哥!今天我来给大家分享一下如何使用playwight处理Dialogs对话框,面向对象为功能测试及零基础小白,这里我尽量用大白话的方式举例讲解,力求所有人都能看懂,建议大家先收藏,以免后面找不到。......