python下载文件损坏_Python爬虫,图片下载完后是损坏的,怎么解决?

2023-10-29

bVVlQx?w=1503&h=1280

bVVlQz?w=2264&h=1053

coding:utf-8

import requests

from bs4 import BeautifulSoup

import os

import sys

reload(sys)

sys.setdefaultencoding('utf8')

爬取目标

url = 'http://www.mzitu.com/page/'

parser = 'html.parser'

cur_path = os.getcwd() + '/'

设置报头,Http协议

header = {

'User-Agent' : 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Mobile Safari/537.36',

'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' ,

'Accept-Encoding' : 'gzip, deflate' ,

'Accept-Language' : 'zh-CN,zh;q=0.8,en;q=0.6' ,

'Connection' : 'keep-alive' ,

'Host':'www.mzitu.com' ,

'Upgrade-Insecure-Requests': '1',

'Referer': 'http:://http://www.mzitu.com/'

}

爬取的预览页面数量

preview_page_cnt = 2

for cur_page in range(1, int(preview_page_cnt) + 1):

cur_url = url + str(cur_page)

cur_page = requests.get(cur_url, headers=header)

# 解析网页

soup = BeautifulSoup(cur_page.text, parser)

# 图片入口和文字入口取一个即可

preview_link_list = soup.find(id='pins').find_all('a', target='_blank')[1::2]

for link in preview_link_list:

dir_name = link.get_text().strip().replace('?', '')

link = link['href']

soup = BeautifulSoup(requests.get(link).text, parser)

# 获取图片数量

pic_cnt = soup.find('div', class_='pagenavi').find_all('a')[4].get_text()

# 创建目录

pic_path = cur_path + dir_name

if os.path.exists(pic_path):

print('directory exist!')

else:

os.mkdir(pic_path)

os.chdir(pic_path) # 进入目录,开始下载

print('下载' + dir_name + '...')

# 遍历获取每页图片的地址

for pic_index in range(1, int(pic_cnt) + 1):

pic_link = link + '/' + str(pic_index)

cur_page = requests.get(pic_link, headers=header)

soup = BeautifulSoup(cur_page.text, parser)

pic_src = soup.find('div', 'main-image').find('img')['src']

pic_name = pic_src.split('/')[-1]

f = open(pic_name, 'wb')

f.write(requests.get(pic_src, headers=header).content)

f.close()

os.chdir(cur_path) # 完成下载,退出目录

print('下载完成')

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

python下载文件损坏_Python爬虫,图片下载完后是损坏的,怎么解决? 的相关文章

  • 【React】 13课 安装react脚手架

    第一步 安装脚手架之前需要电脑已安装node与npm 首先按住 shift 鼠标右键 按下 在此处打开命令行窗口 进入命令行窗口 或者 win R 键 输入cmd 进入命令行窗口 输入 node v 与 npm v 查看有无安装node与n
  • Linux安装MySQL5.7.37

    下载地址 https dev mysql com downloads mysql 5 7 html downloads 点击download进入以下页面 可以找到下载链接地址 https dev mysql com get Download
  • python3 sha256加密用法

    hashlib模块简介 hashlib模块为不同的安全哈希 安全散列 Secure Hash Algorithm 和 信息摘要算法 Message Digest Algorithm 实现了一个公共的 通用的接口 也可以说是一个统一的入口 因
  • vue-router之addRoutes使用遇到的坑

    最近项目中使用了vue router的addRoutes这个api 遇到了一个小坑 记录总结一下 场景复现 做前端开发的同学 大多都遇到过这种需求 页面菜单根据用户权限动态生成 一个常见的解决方案是 前端初始化的时候 只挂载不需要权限路由
  • 解决Tomcat后台修改前端无变化问题

    在用tomcat8 9 eclipse ssm开发java web项目的时候 有时会发现后台代码修改了 而前端显示却没有变化 两种情况及解决方案如下 状况一 修改了JSP页面代码 但是浏览器显示出来的还是之前的页面 原因 服务器为提高响应速
  • 统计单词出现的最多次数(Trie树)

    A Time Limit 60ms Memory limit 65536K 有疑问 点这里 题目描述 给出n 1 lt n n lt 2 10 6 个字符串 每个字符串只包含小写英文字母 且最多有五个 问这n个字符串中出现次数最多的有多少个
  • 1.c++环境配置及第一个环境运行

    开发IDE与环境 最好是使用ubuntu系统进行开发 如果没有的话 基于windows使用vs code 进行ssh连接到远程的ubuntu主机进行开发也可以 开发的过程跟本地差不多 vs code IDE 插件的安装 1 变成中文菜单与提
  • ByteBridge数据标注平台:自动驾驶相关数据标注

    ByteBridge Dashboard是一个Saas型数据采集标注平台 利 强大的标注工具 运 智能算法技术 依靠交叉审核质检机制 借助标注运营及管理 动 体化系统 为客户按时提供安全 稳定 质量的数据标注服务 满 在模式识别领域进 科研
  • BP算法

    只限于自己看 预先说明 首先 这里面什么看成变量 什么看成常量 变量 网络的权值W 偏置b默认在W内 以及输入X 常量 就是target 你可能会说呃呃呃 不是输入都是有值吗 不都是数吗 怎么会是变量啊 一般来说网络的反向传播就是两种类型
  • VS2015--win32工程配置

    一个工程很大 需要很多的文件 如果都是我们自己写的文件 我们一般不会把实现不同功能的两个文件命以相同的名称 但是 如果我们引入了第三方库的源码 这样就很有可能有相同名字的文件存在 比如很多库都喜欢定义一个base h文件用于放置一些最基本的
  • Modbus RTU协议认识

    Modbus RTU协议认识 一 通信模式 Modbus RTU协议是一个主从协议 主机发出请求 从机返回响应 从机不能主动发送数据 同一时刻总线上只能有一个主机 但可以有多个从机 从机之间不能相互通信 二 通信角色 主机 主机没有编号 因
  • MYSQL修改时区

    按照公司要求 java程序和数据库时区保持在UTC时区 本文将针对自建数据库 提供修改时区方法 含盖windows和ubuntu环境 一 Windows环境 1 找到mysql配置文件 my ini mysql由于按照方式不同 存在位置可能
  • Python基础知识: for . in range()循环

    Python for x in range 循环打印四个数字能生成多少个互不相同且无重复数字的三位数 记录打印三位数的个数 count 0 用i控制第一位输出的位数 for i in range 1 5 用j控制第二位输出的位数 for j
  • (转)大厂的产品经理是怎样进行产品迭代的?

    先说一下背景 大厂和小厂都呆过 呆过野蛮生长的传统集团的互联网部门 呆过上市的中型二线互联网公司 呆过APPLE STORE行业APP排名第一的产品公司 现在呆在全球一万多员工的超级独角兽公司 其实各个产品公司的迭代流程都大同小异 因为规范
  • Flink 1.11.2 在K8s里基于NFS搭建高可用集群

    使用官方的docker镜像搭建job ha集群一直失败 最后参考了flink1 11 2 的start cluster sh 脚本 对docker 的启动脚本进行了调整 终于成功了 希望能够帮助到大家 需要注意的是 我的k8s环境是基于k8
  • GIS开发一:OpenLayers在线瓦片数据源汇总

    文章目录 1 概述 2 地图数据源 2 1 Google 2 2 OpenStreetMap 2 3 Thunderforest 2 4 Mapbox 2 5 ArcGIS 2 6 Bing地图 2 7 高德地图 2 8 百度地图 2 9
  • 自用入门人工智能笔记

    定义 百度百科的定义 机器学习的主要研究对象是人工智能 特别是如何在经验学习中改善具体算法的性能 能通过经验自动改进的计算机算法的研究 用数据和以往的经验来优化计算基础性的性能标准 Machine Learning书中的定义 如果一个程序可
  • Unity AssetBundle(2):工具UnityStudio

    一 UnityStudio 作用有两个 查看AssetBundle内资源 File gt LoadFile 提取AssetBundle内资源 Export 下载地址 UnityStudio releases地址 Perfare UnityS
  • Linux下Mysql 5.6.21 tar包安装实践

    好久没玩linux 由于项目需要部署新的linux开发环境 包括安装jdk tomcat redis mysql 趁着有时间 赶紧部署好 jdk tomcat redis很快就部署好了 唯独mysql让我折腾了一阵 先安装了我之前就安装过的

随机推荐

  • 数据库性能优化必读,AntDB-M数据库的哈希索引设计

    数据库加快访问速度的关键技术之一就是索引 索引的设计及使用方式极大程度上影响了数据库的性能 AntDB M支持Hash BTree两种索引类型 本文主要讲解Hash索引的相关设计 并给出一些使用建议 1 相关概念 桶 用于定位索引记录的容器
  • 如何在本地操作Redis

    1 下载redis到本地 下载Redis x64 xxx zip压缩包并解压 我这里解压到了D Redis Redis下载地址 2 开启并连接Redis 1 进入解压的文件夹中 按住shift 右击鼠标 点击在此处打开命令窗口 运行命令 r
  • MySQL安装时常见问题和解决方案【详解】

    目录 1 更改不了后缀名 2 配置文件设置错误 3 使用 mysqld install命令安装MySQL服务失败 4 使用 mysqld initialize console命令初始化MySQL 失败 5 使用net start mysql
  • java 中 BigDecimal 详解

    首先 学习一个东西 我们都必须要带着问题去学 这边我分为 为什么 是什么 怎么用 为什么要用BigDecimal 首先 我们先看一下 下面这个现象 那为什么会出现这种情况呢 因为不论是float 还是double都是浮点数 而计算机是二进制
  • 时间的几个实用函数 FILETIME UnixTime的转换

    filetimeToUnixTime windos filetime 起于 1601 01 01T00 00 00Z 单位 100 纳秒 UnixTime 起于 1970 01 01T00 00 00Z 单位 秒 它们的起始时间差了 116
  • Java实现第九届蓝桥杯测试次数

    测试次数 题目描述 x星球的居民脾气不太好 但好在他们生气的时候唯一的异常举动是 摔手机 各大厂商也就纷纷推出各种耐摔型手机 x星球的质监局规定了手机必须经过耐摔测试 并且评定出一个耐摔指数来 之后才允许上市流通 x星球有很多高耸入云的高塔
  • [踩坑记] CUDA环境下bitsandbytes安装报错/异常解决

    关键词 模型量化 bitsandbytes bitsandbytes报错 大模型环境 CUDA环境 1 问题描述 在部署大模型LLaMA的过程中 需要安装量化工具包bitsandbytes 环境如下 操作系统 Ubuntu 18 04 GP
  • 基于ChatGPT3.5 API实现的私有化web程序源码+使用说明,一键部署属于自己定制化的 chatgpt web 程序

    chatgpt web 本项目可以一键部署属于自己定制化的 chatgpt web 程序 兼容gpt3 5 只需下载release中对应平台的项目文件 修改配置后执行 打开 http 127 0 0 1 8080 便可以获得属于自己的cha
  • KEIL5 只有下载程序后不运行,只有在调试模式下多次点击全速运行代码才能跑起来的解决办法

    最近 使用KEIL5下载调试时遇到了一个很奇怪的现象 下载程序后哪怕是断电重启设备 程序都无法运行 在Flash Dowmload 下已经设置了Reset and Run 只有在Debug模式下 且多次点击全速运行 才能够把程序跑起来 最后
  • keyshot场景素材导入_KeyShot导入Rhino室内场景渲染的详细方法

    在KeyShot怎样导入Rhino室内场景渲染呢 下面就为大家分享KeyShot导入Rhino室内场景渲染的图文教程 有需要的可以来了解了解哦 KeyShot导入Rhino室内场景渲染的详细方法 1 打开一个rhino场景 这是一个简单的室
  • powershell 脚本启动优化

    需求分析 powershell 启动慢的主要原因是 profile中的终端配置加载时间长 当我们打开powershell终端进行交互时 加载时间长 尚可忍受 但当我们的脚本 执行powershell脚本时 较长的加载时间 是不可接受的 优化
  • 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java动物爱心救助平台s9dza

    如果你自己基础不好或者是小白的情况下那就建议你选择网站 系统类的去做 但是还得问问你们导师 如果你们导师没问题就可以 因为有的导师是不愿意你们选择做网站 系统的 毕竟做的人比较多 重复率调高 选择这种题目都是要创新功能 所以会比较棘手 以下
  • RT-Thread动态和静态创建线程

    上一篇 RT Thread线程管理教程 http t csdn cn phnwQ 目录 一 静态创建线程和动态创建线程的区别 二 创建线程的常用函数 三 动态创建线程 四 静态创建线程 五 动态和静态创建线程结合 线程调度hook函数使用
  • 计算机科学与技术专业课程有哪些,计算机科学与技术专业课程有哪些

    计算机科学与技术专业简介 计算机科学与技术类专业毕业生的职业发展路线基本上有两条路线 一是纯技术路线 二是由技术转型为管理的路线 计算机科学与技术专业课程 电路原理 模拟电子技术 数字逻辑 数字分析 计算机原理 微型计算机技术 计算机系统结
  • Python——模拟退火在背包问题上的运用(详细代码)

    一 模拟退火简介 二 详细代码 import math import random import matplotlib pyplot as plt def init population n 生成一个种群 个体为全排列的随机排列 popul
  • [每日两题系列]刷算法题咯~~

    今日题目 反转链表 环形链表II 本系列所选题目均来自力扣或者牛客网站 所选题目主要是以其中的简单题为主 中等题为辅 包含少数困难题 原因是 本人目前能力还不够 开展这个系列的目的是督促自己 在暑假的时间里也要保持有一定的刷题量 拒绝摆烂
  • 测试用例(边界值法)

    1 什么是边界值法 有效数据和无效数据的分界点 往往作为程序员编写程序的判断点 是程序员容易犯错的地方 也是测试人员重点测试的内容 我们把这些分界点的值找到 并进行测试的方法 称为边界值法 2 边界值法应用的场合 1 有数据输入的地方 一般
  • 【毕业设计】基于M5Stack UnitV2的手写识别计算器的设计与制作

    目录 一 简介 二 设计原理 三 系统设计 四 注意点 五 困难 一 简介 耗时五个月 终于完成了毕业设计和毕业答辩 在这里记录一下学习与实现过程 题目是导师给的 这是主要任务和工作内容 利用M5Stack UnitV2的目标检测功能 用摄
  • Java中final 关键字

    final在Java中并不常用 然而它却为我们提供了诸如在C语言中定义常量的功能 不仅如此 final还可以让你控制你的成员 方法或者是一个类是否可被覆写或继承等功能 这些特点使final在Java中拥有了一个不可或缺的地位 也是学习Jav
  • python下载文件损坏_Python爬虫,图片下载完后是损坏的,怎么解决?

    coding utf 8 import requests from bs4 import BeautifulSoup import os import sys reload sys sys setdefaultencoding utf8 爬