利用爬虫下载批量图片

2023-11-10

这是利用python爬取豆瓣Top250电影图片,并下载在本地的一个文件夹中的例子,用了urllib.request.urlretrieve(),直接上代码了,注释说的很清楚哦

import urllib
import urllib.request,urllib.error
import re
from bs4 import BeautifulSoup
import time


def main():
    baseurl="https://movie.douban.com/top250?start="
    datalist = getData(baseurl)
#主函数,用于调用全局的函数和参数

findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)
#用正则表达式来匹配图片的的url

#调用了主网站的url
def getData(baseurl):
    datalist=[]
    #利用for循环来访问所有的url
    for i in range(0,10):
        url = baseurl + str(i*25) #遍历所有页面的url
        html = askURL(url)    #将获取的网页存进变量html中
        soup = BeautifulSoup(html,"html.parser")   #利用靓汤来对获取的页面源码进行获取并存入变量soup中
        for item in soup.find_all('div',class_="item"):    #进行网页源码初等的筛选和解析
            item = str(item)                     # 转化为字符串
            imgSrc = re.findall(findImgSrc, item)[0]         #调用前面的findImgrc找到所有的图片url
            imgSrc_name=imgSrc.split('/')[-1]       #定义图片的名字以便于对文件名的循环,这里是利用url的特点将url进行列表分割,取最后一段,刚好带有.jpg
            print(imgSrc_name)     #这个主要用于浪费电
            urllib.request.urlretrieve(imgSrc, filename=r"C:\Users\86188\Desktop\spider1\%s"%imgSrc_name)
            #这一行是下载和保存,是最核心的一行,imgsrc是下载的地址,filename后是存储路径和文件名,刚好每循环一次下载一个
            time.sleep(2.0)  # 休息两秒,怕被封
    return datalist #这里是返回datalist,不然没法调用

#这是访问所有url的函数
def askURL(url):
    head = {
        "不给你们看"怕id被禁,哈哈
    }
    #头文件
    request = urllib.request.Request(url, headers=head)
    #请求口令
    html = ""
    try:         #捕获异常,如果很自信可以不用
        response = urllib.request.urlopen(request)   #将返回的数据存入response
        html = response.read().decode("utf-8")       #对response进行读取解析为我们能看懂的文字并存入html
        # print(html)
    except urllib.error.URLError as e:       #如果出选报错就会运行这些
        if hasattr(e, "code"):
            print(e.code)           #网页状态码
        if hasattr(e, "reason"):
            print(e.reason)         #报错原因
    return html



if __name__ == "__main__":

    main()
    print('已全部下载完成')
#主函数的调用

实现下载功能,算是在上一个文章递进吧,毕竟机器学习需要学习资料

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用爬虫下载批量图片 的相关文章

随机推荐

  • 从第三方系统定时同步数据不全的解决方案

    小Z今天在项目上遇到一个遗留问题 客户的系统需要定时从银行接口获取入账信息 发生了入账数据的丢失 原因是自研系统通过定时任务的方式 每次执行任务只是获取前一天到当前时间的数据 而上个月有段时间银行前置机通信出现异常 所以出现了数据同步不到位
  • STM32CubeIDE学习笔记——搭建环境、编译烧写

    一 搭建环境 1 1 安装JRE 由于 STM32CubeIDE 软件是基于 JAVA 环境运行的 所以需要安装 JRE 才能使用 官网下载 Java Downloads Oracle 1 2 安装STM32CubeIDE 官网下载 STM
  • 大数据毕设 基于大数据的共享单车数据分析与可视化

    文章目录 0 前言 1 课题背景 2 数据清洗 3 数据可视化 热力图 整体特征分布 查看2011 2012间的单车租借情况 天气对于租借数量的影响 湿度与温度对于租借数量的影响 注册用户与未注册用户 4 总结 0 前言 这两年开始毕业设计
  • 判断IP地址有效性

    gt File Name newfile1 cpp gt Author pzz gt Mail 837157806 qq com gt Created Time 2014 2 24 14 06 47 include
  • 嵌入式 Linux 入门(九、Linux 下的磁盘管理)

    嵌入式 Linux 入门第九课 了解 linux 下的磁盘管理 学会挂载移动硬盘设备 矜辰所致 前言 嵌入式 Linux 专栏更新到现在 我们都还没有碰过开发板 本来想着前面的讲完至少先碰一碰开发板 让我们知道我们最终的目的是在开发板上运行
  • vue el-table的每行操作el-button添加单独的loading效果实现

    vue el table的每行操作el button添加单独的loading效果实现 效果图 实现代码 结语 效果图 实现代码
  • grep -v grep使用说明

    目录 一 ps ef 二 grep java 三 grep job 四 grep v grep 五 awk print 2 六 xargs kill 9 当我们要杀掉某个应用服务进程时 一般会执行以下命令 ps ef grep java g
  • 微信小程序getPhoneNumber快速获取用户手机号组件

    小程序中有很多地方都会用到注册用户信息的地方 用户需要填写手机号等 有了这个组件可以快速获取微信绑定手机号码 无须用户填写 1 getPhoneNumber这个组件通过button来实现 别的标签无效 将button中的open type
  • Java复制数组(深拷贝,浅拷贝)

    1 Object clone 简单直接 只能对源数组完整地复制 此方法是深拷贝 也就是如果clone 那么clone 的新数组修改不会影响老数组 但是能使用该方法为基本数据类型加上string String 有final修饰 不可变 基本数
  • 在线安装visual studio时failed signature validation的原因和解决办法

    这两天给笔记本重装了系统 笔记本的系统是windows 8 1 在装visual studio的时候想换个2017试试 就使用在线的方式装了个2017 community 感觉不错 所以准备把开发的虚拟机里面的2015也换成2017 开发虚
  • T1 mapping的用途

    弥漫性反应性纤维化 其特征是心脏中胶原蛋白的不成比例积累 长期以来被认为是舒张功能障碍 心力衰竭和心源性猝死病因的重要因素 因此 心肌间质成为强烈关注的主题 但结构变化的弥散性使得通过使用常规T1加权成像几乎不可能检测到间质纤维化 在过去几
  • 如何看待区块链下的新型共享经济?

    有业内人士认为 区块链技术天然适合大规模协作的一些应用场景 在共享经济当中 不仅涉及的参与主体多 环节复杂 而且要同时协调一个大规模数量的参与者 这是应用区块链技术的一片沃土 区块链对共享经济带来的颠覆性意义已经不言而喻 共享经济的所有参与
  • Android开发之单位详解(dp、sp、px、in、pt、mm)

    开发这么长时间 一直没关注过长度单位的用法 一直都是一根筋的使用者dp sp 后来才发现 除了这两个以外 Android还提供了pt px in mm 开发中看到有很多人不太理解dp sp和px的区别 现在这里介绍一下dp和sp dp也就是
  • golang 接口

    接口 一组method 签名的组合 通过interface 来定义对象的一组行为 interface 就是一组抽象方法的集合 interface 类型 interface 类型定义了一组方法 如果某个对象实现了某个接口中的方法 则此对象就实
  • Java读配置文件

    读取配置文件的方案 public String getProperty String name String k Properties prop new Properties String key null String val null
  • 华为OD机试 - 跳格子2(Java)

    题目描述 小明和朋友玩跳格子游戏 有 n 个连续格子组成的圆圈 每个格子有不同的分数 小朋友可以选择以任意格子起跳 但是不能跳连续的格子 不能回头跳 也不能超过一圈 给定一个代表每个格子得分的非负整数数组 计算能够得到的最高分数 输入描述
  • Android-Service的生命周期

    与Activity类似 Service也有自己的生命周期函数 在不同的时刻 系统会调用对应的Service生命周期函数 不过与Activity声明周期相比 Service的声明周期更加简单 我们通过官方给出的一张图片来体会一下 Servic
  • Low Elements--AT

    题目描述 Given is a permutation P1 PN of 1 N Find the number of integers i 1 i N that satisfy the following condition For an
  • Selenium3 - 当启动selenium时,跳过配置的chromedriver,使用内置低版本浏览器启动

    报错 今天我在运行selenium的时候 发现会直接弹出一个名为NW js的弹窗且其chromium 是68 我寻思我配的chromedriver已经是94 的了 虽然它也能正常启动但是用着怎么也不对劲 我搜索良久没有答案 就仔细检查了一下
  • 利用爬虫下载批量图片

    这是利用python爬取豆瓣Top250电影图片 并下载在本地的一个文件夹中的例子 用了urllib request urlretrieve 直接上代码了 注释说的很清楚哦 import urllib import urllib reque