【Python/crawl】如何使用Python爬虫将一系列网页上的同类图片下载到本地

【需求】

从网页https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html

开始,有十七页,每页都有大漂亮“小濑田麻由”的若干图片,想要将其下载到本地。

如果手工一张张右键另存为比较麻烦,想用程序自动下载下来。

【思路】

17张网页地址都是连续的,可以用基准网址+页码的形式拼出每个网页。

得到具体每页的网址后,可发起网络请求得到其html内容,再用BeautifulSoup去解析,把包含图片的img标签拿下来,从标签的src属性获取图片的真实地址。

有了图片的真实地址后,就可以发起网络请求获得相应,然后把相应内容存成二进制文件。

流程图

【代码】

#encoding=utf-8

# 内置网络访问包
import requests

# 内置的urllib.request模块
import urllib.request

# 解析html的BeautifulSoup包,安装方法是pip install BeautifulSoup4
from bs4 import BeautifulSoup

# 引入正则表达式包
import re

# 把请求伪装成浏览器Mozilla
user_agent='Mozilla/4.0 (compatible;MEIE 5.5;windows NT)'
headers={'User-Agent':user_agent}

# 以下两个变量需要手工修改
# 去除了页码的基准地址,这个地址需要自己拷贝粘贴过来
page_raw_url="https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/"
# 共有多少页,注意17不是死值,是需要自己看究竟有多少页然后修改的
page_count=17

# 准备一个列表,用以放入文件名和地址组成的字典
jpglist=[]

# 循环组合每页具体地址
for i in range(page_count):
    # 以粗地址和序号,重新组合每页的地址
    url=page_raw_url+str(i+1)

    # 发起请求获取其html内容
    html=requests.get(url,headers=headers)

    # 使用BeautifulSoup解析html文本
    soup= BeautifulSoup(html.text,'html.parser');

    jpg_count=0;
    # 查找html文本中img标签,指定其class是aligncenter,这个规律需要自己看网页源码探究出来!
    for img in soup.find_all('img',class_="aligncenter"):
        # 获取img的实际地址
        addr=img.get("src")

        # 使用正则表达式劈分文本
        parts = re.split(r'[/]', addr)

        # 最后一项即文件名
        filename=parts[-1]

        # 因为此法获取的文件名有两种:png和jpg,png是不需要的,故过滤掉
        if filename.endswith(".jpg"):
            # 准备字典,字典中包含地址和文件名两项
            dic={}
            dic['address']=addr
            dic['filename']=filename

            # 把字典放入列表
            jpglist.append(dic)
            jpg_count=jpg_count+1
    
    # 打印每页发现多少图片
    print("找到"+str(jpg_count)+"张靓照于网址:"+url)

# 用len函数取得jpglist列表的总个数,打印出来
print("共找到"+str(len(jpglist))+"张靓照.")

# 遍历列表,其中每一项是个字典
sn=0
for dic in jpglist:
    #print(dic['filename']+"_"+dic['address'])
    with urllib.request.urlopen(dic['address']) as response:
        data=response.read()
        filename=dic['filename']

        # write binary file
        sn=sn+1
        with open(filename,'wb') as f:
            f.write(data)
            print(str(sn)+"."+filename+" 已下载到本地.")

print("全部靓照下载完成!")

【运行情况】

C:\hy\py>python 05-findallpic.py
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/1
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/2
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/3
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/4
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/5
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/6
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/7
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/8
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/9
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/10
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/11
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/12
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/13
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/14
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/15
找到6张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/16
找到4张靓照于网址:https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html/17
共找到100张靓照.
1.p1682-0628-89533.jpg 已下载到本地.
2.p1682-0628-89534.jpg 已下载到本地.
3.p1682-0628-89535.jpg 已下载到本地.
4.p1682-0629-89536.jpg 已下载到本地.
5.p1682-0629-89537.jpg 已下载到本地.
6.p1682-0629-89538.jpg 已下载到本地.
7.p1682-0629-89539.jpg 已下载到本地.
8.p1682-0630-89540.jpg 已下载到本地.
9.p1682-0630-89541.jpg 已下载到本地.
10.p1682-0631-89542.jpg 已下载到本地.
11.p1682-0631-89543.jpg 已下载到本地.
12.p1682-0631-89544.jpg 已下载到本地.
13.p1682-0631-89545.jpg 已下载到本地.
14.p1682-0631-89546.jpg 已下载到本地.
15.p1682-0631-89547.jpg 已下载到本地.
16.p1682-0632-89548.jpg 已下载到本地.
17.p1682-0632-89549.jpg 已下载到本地.
18.p1682-0632-89550.jpg 已下载到本地.
19.p1682-0632-89551.jpg 已下载到本地.
20.p1682-0632-89552.jpg 已下载到本地.
21.p1682-0633-89553.jpg 已下载到本地.
22.p1682-0633-89554.jpg 已下载到本地.
23.p1682-0633-89555.jpg 已下载到本地.
24.p1682-0633-89556.jpg 已下载到本地.
25.p1682-0633-89557.jpg 已下载到本地.
26.p1682-0633-89558.jpg 已下载到本地.
27.p1682-0634-89559.jpg 已下载到本地.
28.p1682-0634-89560.jpg 已下载到本地.
29.p1682-0634-89561.jpg 已下载到本地.
30.p1682-0634-89562.jpg 已下载到本地.
31.p1682-0634-89563.jpg 已下载到本地.
32.p1682-0634-89564.jpg 已下载到本地.
33.p1682-0635-89565.jpg 已下载到本地.
34.p1682-0635-89566.jpg 已下载到本地.
35.p1682-0635-89567.jpg 已下载到本地.
36.p1682-0635-89568.jpg 已下载到本地.
37.p1682-0636-89569.jpg 已下载到本地.
38.p1682-0636-89570.jpg 已下载到本地.
39.p1682-0636-89571.jpg 已下载到本地.
40.p1682-0636-89572.jpg 已下载到本地.
41.p1682-0636-89573.jpg 已下载到本地.
42.p1682-0636-89574.jpg 已下载到本地.
43.p1682-0636-89575.jpg 已下载到本地.
44.p1682-0637-89576.jpg 已下载到本地.
45.p1682-0637-89577.jpg 已下载到本地.
46.p1682-0637-89578.jpg 已下载到本地.
47.p1682-0637-89579.jpg 已下载到本地.
48.p1682-0637-89580.jpg 已下载到本地.
49.p1682-0638-89581.jpg 已下载到本地.
50.p1682-0638-89582.jpg 已下载到本地.
51.p1682-0638-89583.jpg 已下载到本地.
52.p1682-0638-89584.jpg 已下载到本地.
53.p1682-0639-89585.jpg 已下载到本地.
54.p1682-0639-89586.jpg 已下载到本地.
55.p1682-0639-89587.jpg 已下载到本地.
56.p1682-0639-89588.jpg 已下载到本地.
57.p1682-0639-89589.jpg 已下载到本地.
58.p1682-0639-89590.jpg 已下载到本地.
59.p1682-0640-89591.jpg 已下载到本地.
60.p1682-0640-89596.jpg 已下载到本地.
61.p1682-0640-89604.jpg 已下载到本地.
62.p1682-0640-89609.jpg 已下载到本地.
63.p1682-0641-89621.jpg 已下载到本地.
64.p1682-0641-89623.jpg 已下载到本地.
65.p1682-0641-89627.jpg 已下载到本地.
66.p1682-0642-89634.jpg 已下载到本地.
67.p1682-0642-89641.jpg 已下载到本地.
68.p1682-0642-89649.jpg 已下载到本地.
69.p1682-0643-89652.jpg 已下载到本地.
70.p1682-0643-89654.jpg 已下载到本地.
71.p1682-0643-89657.jpg 已下载到本地.
72.p1682-0643-89664.jpg 已下载到本地.
73.p1682-0643-89666.jpg 已下载到本地.
74.p1682-0643-89669.jpg 已下载到本地.
75.p1682-0644-89671.jpg 已下载到本地.
76.p1682-0644-89675.jpg 已下载到本地.
77.p1682-0644-89677.jpg 已下载到本地.
78.p1682-0644-89679.jpg 已下载到本地.
79.p1682-0645-89680.jpg 已下载到本地.
80.p1682-0645-89682.jpg 已下载到本地.
81.p1682-0645-89683.jpg 已下载到本地.
82.p1682-0645-89684.jpg 已下载到本地.
83.p1682-0645-89685.jpg 已下载到本地.
84.p1682-0645-89687.jpg 已下载到本地.
85.p1682-0646-89689.jpg 已下载到本地.
86.p1682-0646-89691.jpg 已下载到本地.
87.p1682-0646-89692.jpg 已下载到本地.
88.p1682-0646-89694.jpg 已下载到本地.
89.p1682-0646-89696.jpg 已下载到本地.
90.p1682-0646-89698.jpg 已下载到本地.
91.p1682-0647-89701.jpg 已下载到本地.
92.p1682-0647-89703.jpg 已下载到本地.
93.p1682-0647-89705.jpg 已下载到本地.
94.p1682-0647-89706.jpg 已下载到本地.
95.p1682-0648-89707.jpg 已下载到本地.
96.p1682-0648-89709.jpg 已下载到本地.
97.p1682-0648-89710.jpg 已下载到本地.
98.p1682-0648-89711.jpg 已下载到本地.
99.p1682-0648-89712.jpg 已下载到本地.
100.p1682-0649-89713.jpg 已下载到本地.
全部靓照下载完成!

【运行结果】

检查发现,所有图片确实如愿被下载到了本地。程序如果修改基准网址和页码范围,也能用到同网站的其它人的照片上。

END

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

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

相关文章

Maven的基本使用

Maven的基本使用 一、为什么要使用Maven1.1 方便添加第三方Jar包1.2 方便获取第三方Jar包(中央仓库)1.3 解决了依赖问题1.4 解决了依赖冲突1.4 项目管理更清晰1.5 总结 二、Maven的下载三、配置Maven本地仓库和中央仓库3.1 Settings文件3.2 配置本地仓库3.3 配置中央仓库(镜像地…

UE5数字孪生系列笔记(二)

智慧城市数字孪生系统 制作流云动画效果 首先添加一个图像在需要添加流云效果的位置 添加动画效果让其旋转 这个动画效果是程序开始就要进行的,所以要在EventConstruct中就可以启动这个动画效果 添加一个一样的图像在这里,效果是从此处进行放大消散 添…

海豚调度系列之:任务类型——SQL节点

海豚调度系列之:任务类型——SQL节点 一、SQL节点二、创建任务三、任务参数四、任务样例五、运行该任务成功之后在hive中查询结果六、使用前置sql和后置sql示例 一、SQL节点 SQL任务类型,用于连接数据库并执行相应SQL。 二、创建任务 点击项目管理-项…

异步发送CompletableFuture<Void> future = CompletableFuture.runAsync(()

基于runAsync系列方法实现无返回值的异步计算 CompletableFuture future CompletableFuture.runAsync(() -> { sendTextMessage(userInfo,dxContent);//发送 });

Electron程序如何在MacOS下获取相册访问权限

1.通过entitiment.plist,在electron-builder签名打包时,给app包打上签名。最后可以通过codesign命令进行验证。 TestPhotos.plist electron-builder配置文件中加上刚刚的plist文件。 通过codesign命令验证,若出现这个,则说明成…

rancher是什么

Rancher Labs是制作Rancher的公司。Rancher Labs成立于2014年,是一家专注于企业级容器管理软件的公司。它的产品设计旨在简化在分布式环境中部署和管理容器的过程,帮助企业轻松地采用容器技术和Kubernetes。Rancher Labs提供的Rancher平台支持Docker容器…

element-plus 完成下拉切换功能

项目场景: element-plus element-plus 完成下拉切换功能,选用了popover 组件去进行样式修改,本来大概是要实现下面这样的样式效果,没想到调整的时候,这个选择的高亮模块总是超出。 实现效果: 解决方案&am…

【数据结构】二叉树---AVL树的实现

目录 一. 什么是AVL树 二. AVL树的结点结构定义 三. AVL树的动态平衡法 1. 左单旋转 --- RL(RotateLeft) 型调整操作 2. 右单旋转 --- RR(RotateRight) 型调整操作 3. 先左后右双旋转 --- RLR (RotateLeftRight) 型调整操作 4. 先右后左双旋转 --- RRL (RotateRightL…

【SpringBoot篇】再战 登录注册操作

文章目录 ⭐model.dto.user层🎈UserRegisterRequest.java🎈UserLoginRequest.java ⭐model.dto.entity层🎈User.java ⭐service层🎈UserService.java🎈UserServiceimpl.java ⭐controller层⭐mapper层🎈Use…

Parade Series - WebRTC ( < 300 ms Low Latency ) T.B.D

Parade Series - FFMPEG (Stable X64) 延时测试秒表计时器 ini/config.ini [system] homeserver storestore\nvr.db versionV20240312001 verbosefalse [monitor] listrtsp00,rtsp01,rtsp02 timeout30000 [rtsp00] typelocal deviceSurface Camera Front schemartsp ip127…

Ubuntu下txt中文显示乱码问题常规解决方法

在正常使用ubuntu 文档时,突然发现txt文档出现,如下情况 无法正常观看,后来搜了一下发现是gedit 没有对应打开文件的编码格式,Ubuntu用的是utf-8,所以打开会有乱码!初始没有GBK和GB2312,把GBK和GB2312添加…

OpenMP 编程模型

OpenMP 内存模型 共享内存模型: OpenMP 专为多处理器/核心、共享内存机器设计,底层架构可以是共享内存UMA或NUM OpenMP 执行模型 基于线程的并行: OpenMP 程序基于多线程来实现并行, 线程是操作系统可以调度的最小执行单元。 …

全氟烷氧基树脂PFA容量瓶在实验室金属杂质测定实验中应用

PFA(全氟烷氧基树脂)容量瓶是一种高性能的实验室器皿,因其出色的化学稳定性和低吸附性而被广泛应用于各种高精度化学分析。在硅材料表面金属杂质含量的测定中,PFA容量瓶发挥了关键作用。 首先,要了解硅材料表面金属杂质…

高级JAVA工程师解决生产环境JVM宕机Java进程挡掉操作系统内存异常实例讲解

高级JAVA工程师解决生产环境JVM宕机Java进程挡掉内存溢出实例讲解 一、事故描述 生产环境Java进程莫名挡掉,JVM宕机。监控平台报警。生产停了,老板急了,客户爆了,怎么迅速解决事故?每次出现生产事故,都是…

mediapipe 实现姿态分析——举手检测

目录 人体姿态检测 效果展示 举手检测 行业应用 代码实现 代码分析 效果展示 代码修改,一只手举起即可 总结 啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦^_^啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦♪(^∇^*)啦啦啦…

《深入理解springCloud与微服务》笔记

第一章 微服务介绍 1.3 微服务的不足 1.3.2 分布式事务 CAP 理论,即同时满足“一致性”“可用性”和“分区容错”是 件不可能的事。 Consistency :指数据的强一致性。如果写入某个数据成功,之后读取,读到的都是新写入的数据&a…

百度云加速即将下线

关注卢松松,会经常给你分享一些我的经验和观点。 松松商城作为多年百度云加速代理商,上周接到通知:百度云加速产品计划于2024年4月30日下线,目前也无法做实名了。 同时,百度云加速也开始逐步迁移到百度云&#xff0…

【Sql】MVCC有关问题,以及锁,日志和主从复制原理

目录 MVCC 解决什么问题? 实现原理 隐式字段 undo log Read View(读视图) InnoDB 对 MVCC 的实现 锁 分类 锁升级? InnoDB 的行锁? 死锁避免? 乐观锁和悲观锁 日志 主从复制原理 主从复制的作用 MySQL主从复制解决的问题 涉…

Java基于微信小程序的校园生活互助小助手

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

vue3 el-form中嵌套el-tabale 对输入动态校验

简单案例 <el-form :model"Form" :rules"rules" ref"FormRef" class"formDiv"><el-table :data"Form.copyWriters" style"width: 100%"><el-table-column label"文案链接"><temp…