Python 爬虫时间优化——设置不自动读取响应正文,避免自动读取大文件

2023-11-14

Python 爬虫优化——设置不自动读取响应正文,避免自动读取大文件

有的童鞋可能发现,自己的项目,自从按推荐,升级uillib库到urllib3之后,爬虫什么的,有时候会特别耗时,然而自己只不过是分析一下网页,不该如此。

排查时我们往往发现,在某个链接卡住了。

这要从 Python 的 urllib3说起,它的网络请求默认会自动读取响应体正文。这会导致什么问题?导致一旦加载链接,直接全部读取,而网络上常常包含有图片、视频、压缩文件、软件、APP等体积较大甚至突破天际的文件。于是……悲剧就诞生了。

即使我们根据链接名称,过滤掉这些软件,然而仍会存在漏网之鱼——某些网站搞出来的链接,不包含文件后缀,导致不知道是否要过滤掉。怎么办?

答案是对http响应头进行分析,符合条件,再读取响应正文,http响应头中包含的东西很多,例如
content-type: image/pngcontent-length: 960

依据这些条件,可以判断文件类型(MimeType),文件大小之后,再决定是否读取。

对于使用urlib来说,不必担心,而使用urllib3以及以urllib3为基础的库(例如request),可能都存在该问题,urllib3则设置preload_content=False, 分析请求头之后再决定是否读取内容即可

res = urllib3.request(method="GET", url=url,preload_content=False)
if int(content_length) > 1024 * 1024:
    # > 1M
    return
if "image" in content_type:
    res.data
……

PS
对于request库而言,默认很可能也是直接读取的,对应的配置是
stream: (optional) if False, the response content will be immediately downloaded.

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

Python 爬虫时间优化——设置不自动读取响应正文,避免自动读取大文件 的相关文章

  • Sublime Text 插件开发中的全局 Python 包

    一 总结 我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包 而不是 Sublime Text 目录的 Python 包 Sublime Text使用自己的Python环境 而不是
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 没有名为 StringIO 的模块

    我有Python 3 6 我想从另一个名为 run py 的 python 文件执行名为 operation py 的 python 文件 In operation py I do from cStringIO import StringI
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • 在 Windows 上使用 apache mod_wsgi 运行 Flask 应用程序时导入冲突

    我允许您询问我在 Windows 上使用您的 mod wsgi portage 托管 Flask 应用程序时遇到的问题 我有两个烧瓶应用程序 由于导入冲突 只有一个可以同时存在 IE 如果请求申请 1 我有回复 然后 如果我请求应用程序 2
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 如何在 pandas 中使用 read_fwf 跳过空行?

    I use pandas read fwf http pandas pydata org pandas docs stable generated pandas read fwf htmlPython pandas 0 19 2 中的函数读
  • 使用 Keras np_utils.to_categorical 的问题

    我正在尝试将整数的 one hot 向量数组制作为 keras 将能够使用的 one hot 向量数组来拟合我的模型 这是代码的相关部分 Y train np hstack np asarray dataframe output vecto
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • 如何根据第一列创建新列,同时考虑Python Pandas中字母和列表的大小? [复制]

    这个问题在这里已经有答案了 我在 Python Pandas 中有 DataFrame 如下所示 col1 John Simon prd agc Ann White BeN and Ann bad list Ben Wayne 我需要这样做
  • 双击打开 ipython 笔记本

    相关文章 通过双击 osx 打开 ipython 笔记本 https stackoverflow com questions 16158893 open an ipython notebook via double click on osx
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk

随机推荐

  • 网络安全工程师

    岗位职责 1 分析网络现状 对网络系统进行安全评估和安全加固 设计安全的网络解决方案 2 在出现网络攻击或安全事件时 提高服务 帮助用户恢复系统及调查取证 3 针对客户网络架构 建议合理 的网络安全解决方案 4 负责协调解决方案的客户化实施
  • CISSP-安全和风险管理

    俗话说什么是网络安全 那网络安全的基本原则有哪些呢 主要是有可用性 保密性 完整性 1 那什么是可用性 可用性的话 那就是在我们的数据和资源需要随时保持能够授权用户进行访问 用户想要访问想要用的时候 你就应该能用 而不是不能用 2 那什么是
  • Vijava 学习笔记之 DataStore(基础配置信息)

    vijava 代码 实体类 package com vmware pojo import java util ArrayList import java util Calendar 存储信息 author zhb public class
  • R语言实战笔记 基本统计分析-相关

    相关 相关系数可以用来描述定量变量之间的关系 将使用R基础安装中的state x77数据集 提供了美国50个州在1977年的人口 收入 文盲率 预期寿命 谋杀率和高中毕业率数据等 数据如下 相关的类型 Pearson Spearman和Ke
  • Markdown语法详解

    Markdown语法 标题 一级标题 一级标题 二级标题 二级标题 三级标题 三级标题 四级标题 四级标题 五级标题 五级标题 段落 前后空行超过一行 即为一个段落 标题 副标题 正文 表格 ID 用户名 昵称 1 root ROOT 2
  • Node 调试利器,前端、Node 开发必备 - VSCode JS Debug Terminal

    经常看到有同学抱怨 Node 调试麻烦或者是搞不清怎么调试各种脚本 Jest Webpack 等等 而偶尔看到的调试相关的文章又全都是在写 inspect launch json 这些方案 其实有一定学习成本 而其实在 VSCode 中早已
  • [OCCT] Open CASCADE Technology的编译(包含示例的编译)

    QQ交流群 604668232 OCCT知识库 yuque com softdev occt 持续更新 相关文档 官方文档 构建 调试和升级 官方文档 OCCT的构建 文章目录 源代码目录 编译源代码 方法一 使用官方提供的VS工程 方法二
  • 【AAAI-2019】论文整理(清单)

    AAAI 19 Accepted Papers Main Technical Track 整理自 AAAI官网 分类整理持续更新 详细文章可从arXiz org下载 CircConv A Structured Convolution wit
  • VSCode远程配置流程(详细图解)

    基本情况 基本需求 本地 Win10 系统下安装 VSCode 连接远程的服务器 Ubuntu 进行代码编写和调试 下载地址 vscode 图文安装流程 Remote SSH 远程插件 按照下图安装即可 安装完成后 弹出如下图中红色框内的控
  • VoTT使用教程

    VoTT是微软发布的用于图像目标检测的标注工具 它是基于javascript开发的 因此可以跨Windows Linux和Mac平台运行 并且支持从图片和视频读取标注 此外 其还提供了基于CNTK训练的faster rcnn模型进行自动标注
  • 如何查看本机 MySQL(DB)安装位置

    首先按住 win R 键 输入 services msc 找到正在运行的 MySQL 打开属性 之后就可以找到 文件路径了
  • 【八股】2023秋招八股复习笔记2(C++基础 & 操作系统)

    文章目录 1 内存深拷贝 代码 2 C 基础知识 虚函数了解吗 说一下static 关键字的作用 说一下C 和C 的区别 c 中四种强制 cast 转换 请说一下C C 中指针和引用的区别 请你说一下你理解的c 中的smart pointe
  • ESP32/ESP8266使用MicroPython控制DHT11/DHT22

    本教程介绍了如何使用MicroPython固件将DHT11或DHT22温度和湿度传感器与ESP32和ESP8266开发板一起使用 DHT模块 刷新MicroPython固件 要遵循本教程 您需要在ESP32或ESP8266板上安装Micro
  • 微信小程序开发入门——uni-app框架

    uni app Union Application 是一个基于Vue js的前端框架 开发规范借鉴了微信小程序 前端技能点 前后端分离 后端给接口和API文档 注重前端 用uni app框架 作用 创业团队可以更快的开发上线一个app 更容
  • 参数估计(Parameter Estimation):频率学派(最大似然估计MLE、最大后验估计MAP)与贝叶斯学派(贝叶斯估计BPE)

    基础 频率学派与贝叶斯学派 http www douban com group topic 16719644 http www zhihu com question 20587681 最大似然估计 Maximum likelihood es
  • 排序算法-----希尔排序

    目录 前言 希尔排序 shell 排序原理 大致思路 示例 代码实现 C语言 算法分析 时间复杂度 空间复杂度 稳定性 前言 前面我有一篇插入排序的详细的文章讲解 链接 排序算法 插入排序 图文详解 灰勒塔德的博客 CSDN博客 今天我们接
  • uniapp使用原生小程序插件

    本文主要讲述在uniapp上使用原生插件步骤 1 在使用插件之前 先登录微信公众平台 在微信公众平台 点击左下角设置 第三方设置 添加插件 输入插件名字 点击确定提交申请 申请通过后可以使用该插件 第一步 2 搜索你需要的插件点击添加 1
  • ConvenientBanner的基本使用

    前言 关于com bigkoo convenientbanner使用方法的步骤 1 compile com bigkoo convenientbanner 2 0 5 2 布局使用
  • Studio 更新的时候提示Connection failed (connect timed out). Please check network connection and try again.

    如下图 经百度后 明白要有以下操作 修改 ANDROID STUDIO HOME bin 下的 studio exe vmoptions 或者studio64 exe vmoptions 配置后追加如下 Djava net preferIP
  • Python 爬虫时间优化——设置不自动读取响应正文,避免自动读取大文件

    Python 爬虫优化 设置不自动读取响应正文 避免自动读取大文件 有的童鞋可能发现 自己的项目 自从按推荐 升级uillib库到urllib3之后 爬虫什么的 有时候会特别耗时 然而自己只不过是分析一下网页 不该如此 排查时我们往往发现