curl/wget一行命令搞定简单爬虫任务
很多人提起爬虫第一反应就是写 Python 脚本、安装第三方依赖库但对于大量轻量抓取需求系统自带的curl和wget两款命令行工具就足够使用。它们无需搭建开发环境、一行命令即可完成任务、资源占用极低是快速抓取数据、批量下载资源的利器。本文整理了日常高频的爬虫场景全部可通过单行命令实现覆盖从单页抓取到整站下载的常见需求。一、核心参数速览先搞懂最常用的开关在进入实战前先梳理两款工具的核心高频参数理解后就能灵活组合出适合自己的抓取命令。curl 常用核心参数-O将远程文件保存到本地文件名沿用远程文件名-o 文件名自定义保存的本地文件名-s静默模式不输出进度条和冗余日志-A UA字符串设置 User-Agent模拟浏览器身份-e Referer地址设置请求的 Referer 来源页-b cookie内容直接携带 Cookie 发起请求-X POST指定请求方法为 POST-d 参数内容POST 请求提交的表单 / 数据体-x 代理地址:端口使用 HTTP 代理发起请求-L自动跟随 301/302 重定向跳转wget 常用核心参数-O 文件名自定义保存的本地文件名-c断点续传下载中断后从已完成位置继续-r开启递归下载顺着页面链接向下抓取-l 层数设置递归的深度层级避免无限爬取--limit-rate速度限制下载速度避免打满带宽触发风控-U UA字符串设置 User-Agent--referer地址设置请求 Referer--load-cookies文件路径从本地文件加载 Cookie-np不追溯到父目录仅下载目标路径下的内容-k将下载页面内的链接转换为本地相对路径适配离线浏览二、高频场景实战一行命令完成爬虫任务场景 1抓取单个网页 / 文件保存到本地最基础的抓取需求抓取单页或单个文件存储到本地。bash运行# curl 抓取页面并保存为index.html自动跟随重定向 curl -L -o index.html https://example.com # wget 直接下载文件默认沿用远程文件名 wget https://example.com/file.zipcurl 默认不会自动跟随重定向必须加上-L参数才能正常打开跳转链接wget 默认自动跟随重定向无需额外参数。场景 2批量下载序列文件当资源按数字序号命名如分页图片、分卷文档时利用内置序列扩展无需写循环即可批量抓取。bash运行# curl 批量下载img_1.jpg 到 img_100.jpg curl -L -O https://example.com/images/img_[1-100].jpg # wget 批量下载第1到第20页的PDF文档 wget https://example.com/docs/report_{1..20}.pdfcurl 使用[起始-结束]格式实现序列匹配wget 则复用 Bash 原生的{起始..结束}序列扩展两者都支持自定义步长。场景 3提取页面内所有链接配合管道文本工具一行即可提取页面中所有链接适合快速收集目标地址列表。bash运行# curl 抓取页面并提取所有http/https开头的外链 curl -s https://example.com | grep -oE hrefhttps?://[^] | sed s/href//;s/// # wget 抓取页面并提取所有图片资源地址 wget -q -O - https://example.com | grep -oE src[^]\.(jpg|png|webp) | sed s/src//;s///-s/-q开启静默模式屏蔽冗余输出通过 grep 正则匹配目标内容再用 sed 去除 HTML 标签属性最终输出纯文本链接可直接重定向到文件保存。场景 4模拟浏览器请求绕过基础反爬多数站点会拦截默认的 curl/wget 请求头补充 UA、Referer 和 Cookie 即可绕过绝大多数基础反爬校验。bash运行# curl 模拟Chrome浏览器携带Referer和身份Cookie curl -L -A Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 \ -e https://example.com/ \ -b sessionabc123; uid456 \ -o target.html https://example.com/target-page # wget 模拟移动端UA抓取移动版页面 wget -U Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1 \ https://example.com/mobile-page基础反爬大多仅校验 User-Agent补充浏览器 UA 即可解决大部分 403 问题需要登录权限的页面直接复制浏览器中的 Cookie 填入参数即可携带身份请求。场景 5POST 提交表单并抓取返回结果针对需要提交查询的接口或页面构造 POST 请求提交参数直接获取结果页或接口数据。bash运行# curl 提交表单格式POST请求保存查询结果页 curl -L -X POST -d keywordtestpage1 \ -A Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \ -o result.html https://example.com/search # curl 提交JSON格式POST请求获取接口返回数据 curl -L -X POST -H Content-Type: application/json \ -d {query:爬虫,page:1} \ https://example.com/api/searchcurl 是构造复杂请求的利器-d默认提交表单格式搭配-H指定 Content-Type 即可提交 JSON、XML 等任意格式数据非常适合接口类数据抓取。场景 6递归下载整站资源生成离线版本wget 的递归下载是经典的整站爬虫功能一行命令即可把站点页面、图片、样式资源全部下载到本地支持完整离线浏览。bash运行# wget 递归下载文档站深度3层转换本地链接不爬取上级目录 wget -r -l 3 -k -np -U Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \ https://example.com/docs/核心参数说明-r开启递归下载模式-l 3限制最多向下爬取 3 层链接-k将页面内的网络链接转为本地相对路径-np不爬取当前路径的上级目录避免抓取整个站点该命令非常适合下载文档站、教程站点一键生成完整的本地离线版本。场景 7限速 断点续传低风险批量下载批量下载大文件时限速可避免触发服务器风控断点续传支持中断后继续无需从头重新下载。bash运行# wget 限速500KB/s断点续传下载大文件 wget -c --limit-rate500k https://example.com/large-file.zip # curl 自动断点续传下载文件 curl -L -C - -O https://example.com/large-file.zipwget 的--limit-rate支持 k、m 等单位精准控制下载速度-c支持断点续传curl 的-C -表示自动识别已下载长度从断点位置继续下载。三、进阶技巧一行命令完成简单数据清洗配合 sed、awk、grep 等系统自带文本工具curl/wget 可以直接完成简单的结构化数据提取无需额外编写脚本。提取页面标题文本bash运行curl -s https://example.com | sed -n /title/,/\/title/p | sed s/[^]*//g提取页面所有公开邮箱地址bash运行curl -s https://example.com/contact | grep -oE [a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}对于规则固定的页面管道 正则就足以完成数据提取全程一行命令即可完成从抓取到清洗的全流程。四、适用边界与合规提醒工具选型边界适合 curl/wget 的场景单页抓取、批量下载序列文件、整站离线备份、接口调试与简单数据抓取、临时快速任务建议使用 Python 的场景JS 渲染页面解析、复杂反爬对抗、多步骤登录态维持、结构化数据存储、大规模分布式抓取、完善的异常重试逻辑合规与风险提示遵守目标站点的robots.txt协议不抓取明确禁止爬取的路径控制抓取频率与下载速度避免对目标服务器造成过大压力高频抓取可能触发 IP 封禁不得抓取受版权保护的内容或用户隐私数据爬虫行为需符合《网络安全法》等相关法律法规涉及登录态的抓取需注意账号安全遵守站点用户协议不得越权获取非公开数据curl 和 wget 是每个技术人都应该掌握的基础工具对于 80% 的轻量爬虫需求一行命令就能解决比编写脚本高效得多。熟练掌握这些命令日常抓取资源、快速验证接口、收集公开数据都能事半功倍。