当前位置: 首页 > news >正文

Java 网络爬虫笔记

一、基本概念

  • 网络爬虫:自动抓取互联网数据的程序

  • 本质:HTTP请求 + 数据解析 + 数据存储


二、核心流程

URL管理 → 请求发送 → 页面获取 → 数据解析 → 数据存储 → 去重


三、系统架构

调度器(Scheduler)

URL队列(Queue)

下载器(Downloader)

解析器(Parser)

数据管道(Pipeline)

存储(DB / 文件)

补充模块:

  • 去重(Deduplication)

  • 反爬策略(Anti-Anti-Spider)


四、请求层(HTTP)

常用工具

  • HttpURLConnection(原生)

  • HttpClient(JDK11+)

  • OkHttp(推荐)

关键点

  • 连接复用(Connection Pool)

  • 超时控制(connect/read timeout)

  • 重试机制(retry)

  • 请求头伪装(User-Agent / Cookie)


五、数据解析

解析方式

方法特点
正则快,但不稳定
XPath精准
CSS选择器(Jsoup)易用

工具

  • Jsoup(HTML解析)

  • Jackson / Fastjson(JSON解析)


六、URL管理

策略

  • BFS(广度优先)

  • DFS(深度优先)

数据结构

  • 队列(Queue)

  • 优先级队列(PriorityQueue)


七、去重机制(重点)

方案

方法问题
HashSet内存占用大
数据库去重
BloomFilter ⭐高效

BloomFilter特点

  • 位数组 + 多哈希函数

  • 空间效率高

  • 存在误判(False Positive)


八、反爬机制

常见手段

  • User-Agent检测

  • IP限制

  • 请求频率限制

  • Cookie校验

  • 验证码

  • JS动态渲染

  • 参数加密(token / sign)


应对策略

  • 伪装请求头

  • 使用代理IP池

  • 限制请求频率(随机延迟)

  • 维持登录态(Cookie)

  • 抓取接口(绕过前端)


九、动态页面处理

本质

页面数据 = JS渲染结果 ≠ HTML源码


解决方案

  1. 抓接口(推荐)

  2. 分析XHR请求

  3. Selenium模拟浏览器(低效)


十、并发模型

线程模型

  • 单线程(简单)

  • 多线程(高性能)


常见模式

生产者-消费者模型:
URL生产 → 爬虫消费


工具

  • ExecutorService(线程池)


十一、限流与稳定性

限流算法

  • 固定延迟

  • 随机延迟

  • 令牌桶

  • 漏桶


稳定性设计

  • 请求失败重试

  • 异常捕获

  • 日志记录


十二、数据存储

存储方式

  • 文件(txt / json)

  • 关系型数据库(MySQL)

  • NoSQL(Redis / MongoDB)


优化

  • 批量写入

  • 异步存储

  • 队列缓冲(Kafka)


十三、常见问题

  • 编码问题(UTF-8 / GBK)

  • 302重定向

  • 返回假数据(反爬)

  • 死循环(URL未去重)

  • JS加密参数无法解析


十四、性能优化

  • 连接池复用

  • 多线程并发

  • BloomFilter去重

  • 接口抓取替代页面解析

  • 异步处理


十五、法律与规范

  • 遵守 robots.txt

  • 控制请求频率

  • 不抓取隐私数据

  • 商业用途需授权


十六、面试高频总结

  • 爬虫流程:请求 → 解析 → 存储

  • 难点:反爬 + 动态页面

  • 优化:并发 + 去重 + 限流

  • 核心能力:抓接口

http://www.jsqmd.com/news/495183/

相关文章:

  • 2026盘点重庆家具采购优质公司,源点宜联购优势突出 - 工业品网
  • Axure RP 9的初使用
  • 互联网大厂Java面试实战:以智慧物流场景为例深入探讨Spring Boot、微服务与Redis缓存
  • 2026年环氧防火涂料价格多少,怎么选靠谱品牌 - 工业品牌热点
  • BG3启动报错dll缺失终极修复指南:从平台验证到运行库安装
  • 用Web Components原生技术构建可复用的UI组件
  • 拿下36K的AI产品经理offer,他是如何实现职业转型的?
  • 霍尼韦尔 40-0001-99 DC-DC 转换器:工业高压供电的核心模块
  • 性价比高的防火堵料生产企业,省钱又好用的之选 - myqiye
  • 鸿蒙DevEvo Studio运行React Native生成的bundle文件遇到的一个问题
  • AI识别外星岩石成分:测试驱动下的天体化学革命
  • AI 之Tool Calling:让大模型像程序员一样“动手”解决问题
  • 新手必看:瑞祥卡线上回收注意事项与常见问题解答 - 团团收购物卡回收
  • Steam版博德之门3 dll错误解决方法:不重装、不中招的实操方案
  • OpenClaw(小龙虾) 多模型深度测评:效果、费用与场景全解析
  • 写论文最好用的ai?实测5款AI论文生成工具教程,写作速度全面提升! - 掌桥科研-AI论文写作
  • PicoClaw vs OpenClaw:“皮皮虾”遇上“小龙虾”,谁才是轻量级 AI 助手的最优解
  • 教师的幸福感,藏在学生不经意的一句“谢谢”里
  • React 19与Vue 4引领前端开发范式的根本性转变
  • 变现京东e卡的最佳回收渠道推荐,省时又高效! - 团团收购物卡回收
  • 聊聊2026年靠谱的3小时防火墙工程施工,这些企业值得关注 - myqiye
  • Redis值数据类型——set
  • GPT-5.4原生电脑操控实战:从零实现AI自动办公全流程
  • 万磊石业做园林水景费用多少,是值得选择的厂家吗? - 工业设备
  • 如何找到安全靠谱的京东e卡回收平台? - 团团收购物卡回收
  • 双令牌机制:让认证更安全、体验更流畅
  • 国内知名的包装设计公司怎么联系
  • 千寻起名助手小程序(1.0)
  • 基于IPSO-SVM算法的优化与数据分类预测系统——非线性权重粒子群优化支持向量机分类模型
  • 跨境电商爆款逻辑如何打造月销万单的海外热品