Scrapy 详解:Python 爬虫框架的常青树
Scrapy 详解:Python 爬虫框架的常青树从网页里抽取结构化数据,是数据采集的刚需。自己用 requests 手写,很快就会撞上并发调度、重试、去重、限速、清洗落库一连串工程问题。scrapy/scrapy(Scrapy)把这些全部打包成框架:Spider 类专注解析逻辑,引擎、调度器、下载器在底层并发运转,管线负责清洗与存储。约 64.3k Star、BSD 协议、Zyte 商业支持,P
分类
代码积累,滴水穿石,非一日之功。
共 66 篇文章
Scrapy 详解:Python 爬虫框架的常青树从网页里抽取结构化数据,是数据采集的刚需。自己用 requests 手写,很快就会撞上并发调度、重试、去重、限速、清洗落库一连串工程问题。scrapy/scrapy(Scrapy)把这些全部打包成框架:Spider 类专注解析逻辑,引擎、调度器、下载器在底层并发运转,管线负责清洗与存储。约 64.3k Star、BSD 协议、Zyte 商业支持,P
Bun 是什么:JavaScript 的全能工具链如果你做 JavaScript / TypeScript 开发,一定遇到过这些折磨:装依赖太慢(npm install 动辄几分钟)、跑脚本要分多种工具(node 跑 JS、ts-node 跑 TS、jest 跑测试、webpack/vite 打包)、配置文件一堆(package.json / tsconfig / jest.config / .b
Gradle入门:安装Android应用项目使用Gradle构建,Gradle也是安卓开发者需要掌握的一项技能。1、GradleGradle是基于Apache Ant和Apache Maven概念的开源自动化构建工具,支持多语言环境。1.1、Gradle介绍Gradle集Ant、Maven二者之大成,相比Ant的不规范,Maven的配置复杂以及生命周期限制严重,Gradle既规范也更灵活。可以使用
Java中的Optional:优雅处理空值的利器在 Java 8 之前,处理 null 值是一个常见的问题,容易导致 NullPointerException。Java 8 引入了 Optional 类,为我们提供了一种更加优雅、安全的方式来处理可能为 null 的值。本文将详细介绍 Optional 的使用方法、最佳实践以及常见误区。1、Optional 的基本概念1.1、什么是 Optiona
C#中的dynamic动态类型在 C# 中,dynamic是一种特殊的类型,用于在编译时延迟类型检查,直到运行时才进行。可以在代码中编写更灵活的动态类型操作,而无需在编译时明确指定类型。dynamic类型在 C# 4.0 中引入,主要目的是支持动态语言互操作和简化某些复杂的反射操作。1、基本用法1.1、声明dynamic类型可以像声明其他类型一样声明dynamic类型的变量:1.2、动态类型操作由
Java Joda-Time 库详解1、Joda-Time 概述Joda-Time 是 Java 中处理日期和时间的优秀库,它提供了比标准 Java Date/Time API 更强大、更灵活的功能。Joda-Time 由 Stephen Colebourne 创建,旨在解决 Java 标准日期时间 API 的不足,是 Java 8 之前处理日期时间的首选库。核心特点: - 提供丰富的日期时间操作
Java File 类核心用法详解1、File 类概述File 类是 Java 中用于处理文件和目录路径名的核心类,位于 java.io 包中。它以抽象的方式代表文件名和目录路径名,主要用于文件和目录的创建、查找、删除等操作。核心概念: - File 对象代表磁盘中实际存在的文件和目录 - File 类不能访问文件内容本身,需要使用输入/输出流 - File 类提供了跨平台的文件操作方法构造方法:
Linux 解/压缩命令详解1、tar 命令1.1、基本概念tar 命令是 Linux 中最常用的归档工具,用于创建和提取归档文件。它本身只是一个归档工具,不进行压缩,但可以与其他压缩工具结合使用。1.2、常用命令1.3、与压缩工具结合1.4、高级选项2、gzip 和 gunzip 命令2.1、基本概念gzip(GNU zip)是一种流行的压缩工具,使用 DEFLATE 算法压缩文件。gunzip
Java 三方库 Guava 详解1、Guava 概述Guava 是 Google 开发的 Java 核心库,提供了大量实用的工具类和扩展,旨在提高 Java 开发效率和代码质量。Guava 包含了集合、缓存、并发、字符串处理、函数式编程等多个模块,是 Java 开发者必备的工具库之一。核心模块: - com.google.common.collect:集合工具类 - com.google.com
Java CompletableFuture:异步编程的利器1、CompletableFuture 概述CompletableFuture 是 Java 8 引入的一个强大的异步编程工具,位于 java.util.concurrent 包中。它实现了 Future 接口,并提供了丰富的异步操作方法,使得异步编程变得更加简单和优雅。核心特性: - 异步执行任务,不阻塞主线程 - 支持链式调用,代码更
SecureRandom 与 Random 的区别与用法详解在 Java 开发中,我们经常需要生成随机数,而 Random 和 SecureRandom 是两个常用的随机数生成类。虽然它们都能生成随机数,但在安全性、性能和使用场景上存在显著差异。本文将详细解析两者的区别与用法,帮助你在实际开发中做出正确的选择。1、基本概念与核心区别1.1、Random 类java.util.Random 是 Ja
资源传递性:android.nonTransitiveRClassandroid.nonTransitiveRClass 是 Android Gradle 插件中的一个属性,用于控制 R 类的生成和使用。 注意:android.nonTransitiveRClass 只适用于 Android Gradle 插件 3.5.0 及以上版本。当 android.nonTransitiveRClass 设
语言集成查询:LINQLINQ(Language Integrated Query,语言集成查询)是 Microsoft 在 .NET Framework 3.5 中引入的一种强大的查询技术,用于在 .NET 编程语言中以声明式的方式查询和操作数据。LINQ 提供了一种统一的查询语法,可以用于查询各种数据源,包括内存中的集合(如数组、列表)、数据库(如 SQL Server)、XML 文档等。1、
partial 关键字在 C# 中,partial 关键字用于将一个类、结构或接口的定义拆分成多个部分。这些部分可以分布在不同的源文件中,但它们在编译时会被合并为一个完整的类型。1、partial作用partial 在以下几种场景中特别有用:1.1、代码生成工具代码生成工具(如设计器)通常会生成部分代码,而开发者可以在另一个部分中添加自定义逻辑。这样,即使生成的代码被更新,开发者添加的代码也不会丢