python爬虫(Python读取TXT文件中的URL并下载文件)

2023-05-16

前言:本人之前并没有接触过python爬虫,但是现在因为要做个试验,需要下载海量人脸图片,所以需要用到python爬虫这个办法。但是过程中遇到到了很多问题,程序调了很久都不成功,终于调通了,所以就记录一下,万一以后还能用到呢(顺便一提,程序不是我写的,是我的师兄写的,我只是调了很久还没调通,最后依然是师兄调通的,感觉自己有点不要脸,嘻嘻)


正文:我们这个链接中有的是需要通过翻墙才能访问的,所以遇到了一些问题,下面这个链接描述了我们的下载任务:下载任务
我们的程序如下:

import urllib.request
import os

paths = r'F:/vgg_face_dataset/files'
paths_1 = paths[0:19]
files = os.listdir(paths)  #——指定所有目录下所有的文件和目录名。每个人的链接
headers = {'User-Agent': 'Mozilla/5.0'}
for i in files:
    # print(i)
    name = i[:-4]#每个文件名除去后面四个符号
    path_name = paths_1+'/'+name#每个人下载的图片将要寸的文件,以自己的名字命名
    dec = os.path.exists(path_name) #判断文件是否存在
    add_path = 'F:/vgg_face_dataset/file'+'/'+name

    dec1 = os.path.exists(add_path)
    if not dec:
        os.mkdir(path_name)#如果没有该文件,就要创建
        # return False
    if not dec1:
        os.mkdir(add_path)
    f = open(add_path + "/" + i, 'w')
    j=1
    with open(paths+"/"+i ,'r') as p:
        lines = p.readlines()#一个人所有照片的链接
        for line in lines:
            path = line.split(' ')[1]#第一个链接
            # path = str(path)
            # save_path = path_name
            path_n = path_name+'/'+str(j)+'.jpg'#图片以数字增加的顺序命名
            j = j + 1
            det = os.path.exists(path_n)
            if not det:

                req = urllib.request.Request(path, headers=headers)#可以将url先构造成一个Request对象,传进urlopen
                print("output1",req)
                try:
                    f = urllib.request.urlopen(req)
                    print("output2",f)
                except urllib.error.HTTPError as e:
                    # print(e.code)
                    # if e.code==404:
                        #break
                    with open(add_path+"/"+i,'a') as f:
                        f.write(line)
                except ConnectionResetError as e:
                    with open(add_path+"/"+i,'a') as f:
                        f.write(line)
                except urllib.error.URLError as e:
                    with open(add_path+"/"+i,'a') as f:
                        f.write(line)
                else:
                    det = os.path.exists(path_n)
                    if not det:
                        with open(path_n, 'wb') as code:
                            code.write(f.read())
                            print('第 '+str(j)+' 张图片下载成功!')
                            f.close()
    # f.close()
            # print(a)
            # f = urllib.request.urlopen(req)

上面的是我们的程序,因为存在一些无法访问的链接,所以我们试图去跳过它,刚开始在出现错误链接时,我们是这么写的:

try:
                f = urllib.request.urlopen(req)
                #html=f.read.decode("utf8")
                print(f)

            except urllib.error.HTTPError as e:
                if e.code=='404':
                    #break
                    continue
            else:
                det = os.path.exists(path_n)
                if not det:
                    with open(path_n, 'wb') as code:
                        code.write(f.read())
                        f.close()

但是还是调不通,该过程之后,是这么写的:

try:
                    f = urllib.request.urlopen(req)
                    print("output2",f)
                except urllib.error.HTTPError as e:
                    # print(e.code)
                    # if e.code==404:
                        #break
                    with open(add_path+"/"+i,'a') as f:
                        f.write(line)
                except ConnectionResetError as e:
                    with open(add_path+"/"+i,'a') as f:
                        f.write(line)
                except urllib.error.URLError as e:
                    with open(add_path+"/"+i,'a') as f:
                        f.write(line)
                else:
                    det = os.path.exists(path_n)
                    if not det:
                        with open(path_n, 'wb') as code:
                            code.write(f.read())
                            print('第 '+str(j)+' 张图片下载成功!')
                            f.close()

然后调通了,做法是对于无法访问的链接我们把它存在了文件中,比较两者,感觉就是跳过无济于事,非要做一些处理,我也有些不懂,对于三种错误做处理就可以了。
下面有几个链接,是关于这个程序所需要了解的知识:
解决:ConnectionResetError 的一个博客
python爬虫之urlError异常处理
python os
python urllib.request
好的,就这样,关于链接大家可以在下载任务中下载。
大家可以在python中逐条运行,这样可以便于大家理解程序,我注释了一部分,其余的大家可以自己运行。
如有错误,欢迎指出。

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

python爬虫(Python读取TXT文件中的URL并下载文件) 的相关文章

  • 如何安装双系统之ubuntu安装

    如何安装双系统之ubuntu安装 1 首先在Windows下对磁盘分出一块空闲分区大概100G左右 2 然后下载Ubuntu16 04镜像 xff0c 制作启动盘 3 重启电脑 xff0c 按住对应的键 xff08 不同电脑型号可能不同 x
  • 场景分类综述——Remote Sensing Image Scene Classification Meets Deep Learning

    一 场景分类面临的挑战 场景分类的挑战包括 xff1a 1 类内多样性大 xff0c 2 类间相似性高 也称为类间可分性低 xff0c 3 对象 场景尺度的差异大 就类内的多样性而言 xff0c 挑战主要来自于在同一个语义类中出现的地物的巨
  • 配置服务器的磁盘阵列并正确分区

    磁盘阵列 xff0c 即独立磁盘冗余阵列RAID xff08 Redundant Array of Independent Disks xff09 xff0c 其实就是一个将多块独立磁盘结合在一起 xff0c 从而提高数据的可靠性和I O性
  • 软件项目组织架构安排

    这个主题涉及到三个方面 xff0c 项目计划管理 组织管理和技术管理范畴 项目计划管理是项目管理中的一个大篇章 xff0c 包括时间计划 成本计划 费用计划等在内的各类计划管理 xff0c 不是本文章所谈的范围 xff0c 只是本文主题涉及
  • SpringBoot2.x学习(二):为属性注入配置文件中的值:@ConfigurationProperties注解的使用

    文章目录 一 64 ConfigurationProperties 简单介绍二 64 ConfigurationProperties 使用示范1 创建两个 javaBean2 在 SpringBoot 全局配置文件写入需要注入的值2 1 a
  • SpringBoot 2.x学习(三):为属性注入配置文件中的值:@Value 注解的使用

    文章目录 一 64 Value 注解的作用二 使用 64 Value 为普通成员变量注入值1 字面量 xff08 1 xff09 语法 xff08 2 xff09 举例 2 Spring 表达式 xff08 SpEL xff09 xff08
  • 数据结构与算法学习(一):线性表之数组的插入与删除(Java 实现)

    文章目录 一 数组介绍1 线性表2 连续的内存空间和类型相同的数据 二 利用数组实现插入操作及相应的时间复杂度分析1 数组原本有顺序 xff0c 插入后需要继续保持数组有序 xff08 1 xff09 思路分析 xff08 2 xff09
  • 抽象类与接口

    抽象类与接口 接口与抽象类 一 抽象类 说起抽象类 xff0c 我们先说一下如何定义一个抽象方法 span class token keyword abstract span span class token keyword class s
  • SpringBoot 项目集成 mybatis-generator

    SpringBoot 项目集成 mybatis generator mybatis 官方提供了一个插件 xff1a myabtis generator xff0c 可以根据数据库中的表生成对应的实体类和针对单表的一些操作方法 xff0c 可
  • InnoDB 和 MyISAM 的区别

    这里写自定义目录标题 MyISAMINNODB事务支持不支持支持数据行锁定不支持 xff08 表锁 xff09 支持 xff08 行锁 xff09 外键约束不支持支持全文索引支持不支持表空间的大小较小较大 xff0c 约为 2 倍 MyIS
  • xshell上传、下载文件

    安装 lrzsz yum y span class token function install span lrzsz 上传资源到服务器命令 rz 回车后 xff0c 会出现一个弹框 xff0c 选择上传的文件即可 从服务器下载资源命令 s
  • 浅谈vue+webpack项目调试方法

    题外话 xff1a 这几个月用vue写了三个项目了 xff0c 从绊手绊脚开始慢慢熟悉 xff0c 婶婶的感到语言这东西还是得有点框框架架 xff0c 太自由了容易乱搞 xff0c 特别人多的时候 从webpack开始 直接进入正题 有人觉
  • CentOS7下vlan网卡配置

    操作系统 xff1a CentOS 7 x86 64 Everything 1804 开源虚拟软件 xff1a Oracle VM VirtualBox 因为使用VirtualBox默认配置所以网卡设备名是enp0s3 root 64 lo
  • 12、基本数据链路层协议(数据链路层)

    1 基本数据链路层协议 引言 在考察协议之前 xff0c 先明确一下有关底层通信模型的基本假设是有必要的 首先我们假设物理层 数据链路层和网络层都是独立的进程 xff0c 它们通过来回传递信息进行通信 如图所示 xff0c 物理层进程和某些
  • Java 中的上转型和下转型

    在我们的日常中 xff0c 上转型和下转型都使用的比较少 xff0c 所以当别人问起来什么是上转型 xff0c 什么是下转型 xff0c 自己往往一片模糊 xff0c 或者不能将他们进行明显的区分 在这里 xff0c 我将以我个人理解来论述
  • MySQL 中 Join 的基本实现原理

    http isky000 com database mysql join buffer nested loop implement DataBase Dec 3rd 2008 作者 xff1a Sky Jian 可以任意转载 但转载时务必以
  • mysql 常用命令

    1 mysqldump 可以把现有数据库中的表结构以及数据导入到一个文本文件中 mysqldump u root socket 34 socketname 34 p tpch no data gt tpch sql 如果不加上 no dat
  • 完全二叉树学习

    定义 xff1a 假设高度为h xff0c 那么前h 1层都是满的 xff0c 最后一层 xff0c 从左向右 xff0c 连续集中在最左边 xff1b k层的完全二叉树总节点个数最小为2 k 1 xff0c 最大节点个数为2 k 1 可以
  • thrift例程编译报错原因和解决方法总结

    thrift里自带的turoral xff0c 使用make编译时经常会报错 xff0c 总结如下 xff1a 1 如果出现如下错误 xff1a error uint8 t does not name a type error uint32
  • C++11带来的move语义

    C 43 43 11带来了move语义 xff0c 可以有效的提高STL的效率 xff0c 这篇文章写的非常好 xff0c 可以参考 xff0c 这里对原文进行翻译 xff0c 加入我自己的理解 原文 xff1a http www cpro

随机推荐

  • C++11带来的lambda表达式

    C 43 43 11带来了lambda表达式 xff0c 可以简化程序的编写 xff0c 使代码更加清晰 现在按照步骤来介绍lambda表达式 xff1a 1 函数对象 又叫仿函数 xff0c 如果一个类或者结构体重载了operator 操
  • caffe中几个基本概念

    caffe中几个基本概念 1 caffe中的blob结构是用来进行数据存储 交换和处理网络中正向反向迭代时的数据和导数信息的数据结构 blob是caffe的标准数组结构 他提供了一个统一的内存接口 其将内部的cpu gpu数据之间的传输与存
  • 摄像头引脚定义

    摄像头引脚定义 1 NC NO CONNECT 2 AGND Power Analog ground 3 SIO D I O SCCB serial interface data I O 4 AVDD Power Analog power
  • Android7.0 JACK编译器不支持多用户同时编译的问题的解决

    xfeff xfeff Android7 0 xff08 也就是Android N xff09 上默认使用JACK编译器而不再使用openjdk了 xff0c 但发现JACK不是很好用 xff0c 比如最大的一个问题就是 xff0c 同一台
  • 【树莓派】死机自动重启、掉线自动重连

    目录 WIFI掉线自动重连 首先查看你的板子硬件型号 拿树莓派去做服务器就要配置下这两项 xff0c 保证随时能够VNC控制 WIFI掉线自动重连 http shumeipai nxez com 2017 01 25 raspberry p
  • open vswitch分析

    Open vSwitch 概述 Open vSwitch xff08 下面简称 OVS xff09 是一个高质量的 多层虚拟交换机 OVS 遵循开源 Apache2 0 许可 xff0c 通过可编程扩展 xff0c OVS 可以实现大规模网
  • C# 接口《通俗解释》

    原文地址 xff1a https www cnblogs com hamburger p 4681681 html 接口的定义 xff1a 接口是指定一组函数成员 xff0c 而不实现他们的引用类型 接口使用interface 关键字进行定
  • linux 如何查看指定动态库

    要查看 Linux 系统指定的动态库 xff0c 可以使用以下命令 xff1a 使用 ldconfig 命令 xff1a ldconfig p 该命令将显示系统已加载的所有动态库及其路径 如果要查找特定动态库 xff0c 可以使用 grep
  • Tortoisegit 恢复文件夹被删除的文件(被误删)

    关于Tortoisegit 恢复git文件夹中被删除的文件 xff1a 1 在git文件夹右键tortorisegit show log 2 选择版本 xff08 当时执行删除操作的版本 xff09 3 选择被delete掉的 xff0c
  • putty screen 快捷键

    使用putty的时候 xff0c 开启screen再detach xff0c 可以防止跑程序过程中断开连接而导致程序中断 总结了下putty与screen 相关的快捷键 目前常用的有如下几个 xff08 命令均在putty终端输入 xff0
  • Magento的不同版本(CE,EE,ECE)介绍

    Magento提供了三个不同的版本平台 xff0c 即Magento Community Edition xff08 CE xff09 社区版 xff0c Magento Enterprise Edition xff08 EE xff09
  • c语言初学,字母大小写转换

    这类题目主要通过ASCII码差值实现 xff0c A对应ASCII码十进制数字是65 xff0c a对应ASCII码十进制数字是97 xff0c 即大小写字母之间ASCII码差值为32 xff0c 想要将大写字母转换为小写字母可以将该字符A
  • matlab——subplot多子图共用一个colorbar,微调子图和colorbar位置

    用subplot命令画出多个图后 xff0c 需要让这些图共用一个colorbar 在这里与大家分享我的操作 xff0c 希望能帮助到有需要的人 备注 xff1a 从 R2019b 开始 xff0c 可以在分块图布局中显示共享颜色栏 xff
  • 远程连接服务器数据库报错:Host ‘XXXXXX’ is blocked because of many connection errors

    一 我遇到的问题描述 使用Navicat for mysql连接公司的服务器数据库 xff0c 报错 xff1a Host XXXXXX is blocked because of many connection errors 二 出现错误
  • android中MediaCodec硬编码中关键帧间隔时间设置问题

    在MediaCodec硬编码中设置 xff29 关键帧时间间隔 xff0c 在 xff21 xff30 xff29 中是这么设置的 mMediaCodec 61 MediaCodec createByCodecName debugger g
  • python3 网络编程问题——虚拟机centos7上运行tcp服务器,在主机win10上使用网络调试助手作为tcp客户端无法建立连接,提示1035错误:the socket is marked...

    前提 xff1a 主机和虚拟机都是在同一网段下 我的网络调试助手的连接结果如下图 xff1a 注意 红框中的提示 xff0c 连接超时的结果可能是由于以下两种可能的情况导致的 xff1a 1 服务器端口未开启监听 2 路由项被防火墙拦截 对
  • DSSM pytorch实现

    之前在网上找到了一个文本匹配实现仓库 xff0c 但是没有提供DSSM的代码 xff0c 我就根据那个代码实现以下DSSM 数据集采用的是蚂蚁金服的数据集 也参考过别人的代码 xff0c 但是总感觉怪怪的 xff0c DSSM原文中 xff
  • 文本匹配实验结果总结

    主要把一些实验结果说一下 xff1a DSSM 作为文本匹配的开山鼻祖 xff0c 想法也很简单 xff0c 就是将query 和doc拉到同一维度 xff0c 然后计算余弦相似度 xff0c 网络也是非常简单 xff0c 所以只获得了78
  • 使用wikiextractor 提取wiki数据

    wikiextractor包链接地址 xff1a https github com attardi wikiextractor 安装wikiextractor pip install wikiextractor 然后下载wiki语料库 xf
  • python爬虫(Python读取TXT文件中的URL并下载文件)

    前言 xff1a 本人之前并没有接触过python爬虫 xff0c 但是现在因为要做个试验 xff0c 需要下载海量人脸图片 xff0c 所以需要用到python爬虫这个办法 但是过程中遇到到了很多问题 xff0c 程序调了很久都不成功 x