c.Visit()未触发OnHTML最常见原因是请求被目标站拦截导致403,因Colly默认UA易被拒绝;需设自定义UserAgent、加OnResponse打印状态码、处理重定向、传完整URL、用Limit()控并发、解压gzip、避开JS渲染页、选稳定选择器、用连接池+channel安全存库。为什么 c.Visit() 调了却没触发 OnHTML?最常见原因不是代码写错了,而是请求根本没成功——被目标站拦在第一关。Colly 默认 UA 是 "colly - https://github.com/gocolly/colly",多数网站(尤其是 nginx 前置的)直接 403 拒绝,连 HTML 都不返回,OnHTML 自然不会执行。必须显式设置 c.UserAgent,例如 c.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"加 c.OnResponse(func(r *colly.Response) { log.Println(r.StatusCode, r.Request.URL) }) 确认是否真收到了 200遇到 302 重定向默认不跟,需设 c.AllowURLRevisit = true(否则跳转后 URL 被去重丢弃)c.Visit() 只接受完整 URL(含 https://),传 /page/2 这类相对路径会静默失败并发数设成 c.Async = true 就够了吗?不够,而且非常危险。c.Async = true 只是开启异步模式,底层仍是单协程串行发请求;真正控制并发的是 c.Limit(),不设它等于没并发。默认行为:无 LimitRule → 所有请求排队,等前一个结束才发下一个正确做法:用 c.Limit(&colly.LimitRule{DomainGlob: "*", Parallelism: 4}) 控制最大并行请求数别盲目调高 Parallelism:设到 10+ 容易触发目标站风控,或本地 too many open files 错误不同域名建议分开限流,比如 GitHub Pages 内容静态但反爬严:&colly.LimitRule{DomainGlob: "*.github.io", Parallelism: 1}OnHTML("div.title") 提取不到内容?先查这三件事不是选择器写错,就是你看到的 HTML 和 Colly 拿到的根本不是一回事。浏览器里能看见,不代表服务器返回的就是那个结构。网页可能返回 gzip 压缩内容,但 Colly 默认不解压 → 加 c.OnResponse(func(r *colly.Response) { r.Collector.UnifyUTF8 = true }) 强制 UTF-8 并启用解压JS 渲染的内容(如 React/Vue SPA)Colly 看不见 → 检查源码里有没有 id="__next" 或 data-server-rendered,有就别硬扛,换 Puppeteer选择器太深、依赖属性顺序或空格 → 改用 class 名优先:"h1.post-title" 比 "body > article > header > h1" 更稳调试技巧:在 OnResponse 里打印 string(r.Body[:min(200, len(r.Body))]),确认返回体是不是你预期的 HTML结果存 MySQL 时连接池爆满,怎么安全写入?Colly 回调本身就在 goroutine 里跑,每个 OnHTML 都开个 sql.Open(),几秒内就能打满数据库连接数。 跃问 跃问是由阶跃星辰开发的免费AI智能问答助手,随时帮你智能搜索、高效阅读、识图理解、和你畅聊感兴趣的话题。
Golang colly爬虫框架如何用_Golang colly教程【进阶】
张小明
前端开发工程师
掌握利器:Git版本控制与基础算法实战指南
导言 简述软件开发中代码管理与算法的重要性。 说明学习Git和基础算法如何提升开发效率和问题解决能力。 概述文章内容结构。 第一部分:Git - 代码时光机 1.1 Git 核心概念 版本控制是什么?为什么需要它?(对比手动备份) 分布式 vs 集中式版本控制 (简要提及SVN)。 工作区、暂…
树莓派4B-Python-舵机控制进阶:从基础驱动到云台项目实战
1. 从单舵机到云台系统的跨越 第一次用树莓派控制单个SG90舵机转动时,那种成就感至今难忘。但当我想做个能追踪物体的云台时,才发现真正的挑战才刚刚开始。两个舵机协同工作会出现信号干扰、电源不足、程序逻辑混乱等各种问题,这些都是单舵机…
QGIS 矢量图层批量导出geojson格式的自动化脚本实现
1. 为什么需要批量导出geojson? 在日常GIS数据处理工作中,我们经常遇到需要将多个矢量图层统一导出为geojson格式的情况。比如我最近接手的一个城市基础设施项目,需要处理超过200个不同类别的矢量图层,如果一个个手动导出…
BilibiliDown:5步轻松下载B站视频的跨平台神器
BilibiliDown:5步轻松下载B站视频的跨平台神器 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…
Day02:RAG 优化四大核心纬度
文章目录一、引言:RAG 优化的重要性二、文档切分优化:让知识更好被找到2.1 固定长度切分:简单高效的基础方案2.2 语义切分:保持上下文完整性的智能方案2.3 递归切分:灵活智能的分层策略2.4 块重叠:关键信息…
联想M920x黑苹果:构建高性能商用主机的完整macOS体验
联想M920x黑苹果:构建高性能商用主机的完整macOS体验 【免费下载链接】M920x-Hackintosh-EFI Hackintosh Opencore EFIs for M920x 项目地址: https://gitcode.com/gh_mirrors/m9/M920x-Hackintosh-EFI 在商用主机领域,联想M920x凭借其紧凑的设计…