Java 网络爬虫笔记

发布时间:2026/7/8 7:27:54

Java 网络爬虫笔记 一、基本概念网络爬虫自动抓取互联网数据的程序本质HTTP请求 数据解析 数据存储二、核心流程URL管理 → 请求发送 → 页面获取 → 数据解析 → 数据存储 → 去重三、系统架构调度器Scheduler↓URL队列Queue↓下载器Downloader↓解析器Parser↓数据管道Pipeline↓存储DB / 文件补充模块去重Deduplication反爬策略Anti-Anti-Spider四、请求层HTTP常用工具HttpURLConnection原生HttpClientJDK11OkHttp推荐关键点连接复用Connection Pool超时控制connect/read timeout重试机制retry请求头伪装User-Agent / Cookie五、数据解析解析方式方法特点正则快但不稳定XPath精准CSS选择器Jsoup易用工具JsoupHTML解析Jackson / FastjsonJSON解析六、URL管理策略BFS广度优先DFS深度优先数据结构队列Queue优先级队列PriorityQueue七、去重机制重点方案方法问题HashSet内存占用大数据库去重慢BloomFilter ⭐高效BloomFilter特点位数组 多哈希函数空间效率高存在误判False Positive八、反爬机制常见手段User-Agent检测IP限制请求频率限制Cookie校验验证码JS动态渲染参数加密token / sign应对策略伪装请求头使用代理IP池限制请求频率随机延迟维持登录态Cookie抓取接口绕过前端九、动态页面处理本质页面数据 JS渲染结果 ≠ HTML源码解决方案抓接口推荐分析XHR请求Selenium模拟浏览器低效十、并发模型线程模型单线程简单多线程高性能常见模式生产者-消费者模型URL生产 → 爬虫消费工具ExecutorService线程池十一、限流与稳定性限流算法固定延迟随机延迟令牌桶漏桶稳定性设计请求失败重试异常捕获日志记录十二、数据存储存储方式文件txt / json关系型数据库MySQLNoSQLRedis / MongoDB优化批量写入异步存储队列缓冲Kafka十三、常见问题编码问题UTF-8 / GBK302重定向返回假数据反爬死循环URL未去重JS加密参数无法解析十四、性能优化连接池复用多线程并发BloomFilter去重接口抓取替代页面解析异步处理十五、法律与规范遵守 robots.txt控制请求频率不抓取隐私数据商业用途需授权十六、面试高频总结爬虫流程请求 → 解析 → 存储难点反爬 动态页面优化并发 去重 限流核心能力抓接口

相关新闻