news 2026/9/3 12:53:11

Scrapy命令行命令大全:crawl、genspider、fetch、parse等14个命令速查与实用技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Scrapy命令行命令大全:crawl、genspider、fetch、parse等14个命令速查与实用技巧

Scrapy命令行命令大全:crawl、genspider、fetch、parse等14个命令速查与实用技巧

【免费下载链接】scrapyScrapy, a fast high-level web crawling & scraping framework for Python.项目地址: https://gitcode.com/GitHub_Trending/sc/scrapy

Scrapy 是 Python 生态中最流行的爬虫框架,而scrapy命令行工具是它的“驾驶舱”——通过crawl、genspider、fetch、parse、shell等 14 个内置命令,你可以在终端完成建项目、建爬虫、跑任务、调试页面、输出数据的全流程,几乎不用离开键盘。本文按使用场景把这 14 个 Scrapy 命令行命令逐一拆解,并附上新手最易踩坑的实用技巧,建议收藏备用。

上图是 Scrapy 的核心架构(源码参考 scrapy/core/engine.py)。所有会“发起爬取”的命令——crawl、fetch、parse、shell 等——底层都是启动一个内部 CrawlerProcess 实例来驱动这套引擎。

14 个 Scrapy 命令一张表速查

先给全景图。14 个命令分为“全局命令”(无需项目目录即可用)和“项目内命令”(必须在含scrapy.cfg的目录里执行)两类:

命令用途是否需项目
startproject创建新项目
genspider用模板生成爬虫
crawl运行项目中的爬虫
runspider直接运行单个 Python 爬虫文件
fetch用爬虫同款方式抓取 URL 内容
view在浏览器中查看 URL
shell交互式调试页面
parse离线调试爬虫解析逻辑
check运行契约(Contract)测试
list列出项目中所有爬虫
edit用编辑器打开爬虫文件
settings查看某个配置项的值
version查看 Scrapy 版本
bench运行性能基准测试

任何命令加-h都能查看详细帮助,例如scrapy crawl -h。命令的注册与分发逻辑在 scrapy/commands/init.py 和 scrapy/cmdline.py。

快速起步:startproject 与 genspider 两步生成项目

startproject是一切的原点,它会生成标准的 Scrapy 项目骨架(settings.pyspiders/目录、scrapy.cfg等):

scrapy startproject myproject

项目结构模板文件位于 scrapy/templates/project/。

genspider则基于预置模板生成爬虫文件,<name>会成为爬虫名,<domain>会自动写入allowed_domainsstart_urls

scrapy genspider example example.com

常用选项(源码见 scrapy/commands/genspider.py):

  • -l:列出可用模板(basic、crawl、csvfeed、xmlfeed,模板文件在 scrapy/templates/spiders/)
  • -t crawl:使用 CrawlSpider 规则模板
  • --force:重名时强制覆盖
  • -e:生成后直接打开编辑器

小技巧:URL 不写协议头也行,genspider 会自动补上https://

跑爬虫:crawl 与 runspider 的区别

crawl按名称运行项目里的爬虫(实现见 scrapy/commands/crawl.py),爬虫名可先用scrapy list查:

scrapy crawl myspider

高频选项:

  • -a NAME=VALUE:传爬虫参数(可重复使用)
  • -o FILE:FORMAT:追加输出,如scrapy crawl myspider -o items.json
  • -O FILE:FORMAT:覆盖写入输出

runspider则不需要项目,直接跑单个 Python 文件里的爬虫,适合写临时脚本式爬虫:

scrapy runspider my_spider.py

两者选项一致,runspider的实现在 scrapy/commands/runspider.py。

调试四件套:fetch、view、shell、parse

这是日常写爬虫时最常用的四个“侦察兵”命令,帮助你在正式跑任务前确认页面能被正确拿到、正确解析。

fetch:用爬虫的“眼睛”看页面

scrapy fetch --headers http://www.example.com/

关键点在于:fetch 完全复用爬虫的下载配置(User-Agent、代理、重试等),能看到爬虫“实际”拿到的响应。--headers打印请求/响应头,--no-redirect禁用跳转。效果类似浏览器开发者工具的 Network 面板:

view:在浏览器中查看

scrapy view http://www.example.com/

按爬虫的方式下载后把内容交给浏览器打开,适合排查“浏览器里能看到、爬虫里看不到”的诡异问题。

shell:交互式调试利器

scrapy shell http://www.example.com/

进入后response对象已在手边,可以直接response.css('div.quote')试验选择器,所见即所得。也可以不进交互模式、直接执行一行表达式:

scrapy shell http://www.example.com/ -c '(response.status, response.url)'

调试时结合浏览器 Elements 面板对照 CSS 结构会更高效:

parse:离线演练爬虫解析逻辑

scrapy parse http://www.example.com/ -c parse_item

parse 会真实抓取 URL 并调用指定方法(-c),打印出 Scraped Items 和 Requests 两个列表——等于把爬虫的回调“空跑”一遍,验证选择器与请求链是否符合预期,而不用完整跑一次任务。加-d 2可递归跟两层深度,加-o输出结果文件。

质量与配置类:check、list、edit、settings、version、bench

  • check:运行契约测试,类似爬虫的“单元测试”,scrapy check -l列出全部契约(源码 scrapy/commands/check.py)。
  • list:一行一个地列出项目内所有爬虫名,是crawl的好搭档。
  • edit:用EDITOR环境变量指定的编辑器打开爬虫文件,省去手动拼路径。
  • settings:确认某个配置项的最终生效值,排错必备:scrapy settings --get DOWNLOAD_DELAY
  • version:查看版本;加-v会打印 Python、Twisted 与平台信息,提 bug 报告时直接附上。
  • bench:快速性能基准测试,用来检验本机环境是否正常,源码见 scrapy/commands/bench.py。

5 个实用技巧,让命令行效率翻倍

  1. -h是最好的文档:每个命令都支持scrapy <command> -h,比翻手册更快。
  2. 先 shell 后 crawl:写爬虫时先用scrapy shell验证选择器,再写进parse(),最后才scrapy crawl,能省掉大量“跑半天才发现选错了”的返工。
  3. 输出格式自由组合-o file.csv/-O file.json里的格式可以是 csv、json、xml、jl 等(导出机制见 scrapy/exporters.py)。
  4. 用 settings 排错:怀疑代理、UA、限速没生效时,scrapy settings --get <KEY>一步到位确认最终值。
  5. 自定义命令扩展:继承ScrapyCommand类并在设置中配置COMMANDS_MODULE,即可给自己的项目加专属命令,内置命令的实现都值得一读:scrapy/commands/。

结语

14 个命令看似多,其实围绕一条主线:startproject/genspider 负责“造”,crawl/runspider 负责“跑”,fetch/view/shell/parse 负责“看”,其余命令负责“查与测”。记住这张分工表,再把本文开头的速查表贴在工位上,Scrapy 命令行从此不再是背命令,而是查命令。

完整的命令参考文档见 docs/topics/commands.rst。

【免费下载链接】scrapyScrapy, a fast high-level web crawling & scraping framework for Python.项目地址: https://gitcode.com/GitHub_Trending/sc/scrapy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 12:53:10

UPX加壳脱壳管家:PE文件处理与逆向分析实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 12:50:55

STM32驱动TFT屏卡顿根源:SPI时序、DMA与GRAM写入深度解析

简介&#xff1a;本资源面向STM32嵌入式初学者与项目开发者&#xff0c;提供1.8寸TFT彩屏在STM32平台上的完整驱动实现方案&#xff0c;解决SPI接口液晶屏在标准外设库与HAL库双框架下的适配、初始化、图像显示及汉字/图形绘制等核心问题。压缩包共含多个工程文件&#xff0c;以…

作者头像 李华
网站建设 2026/9/3 12:48:55

大模型成本直降 50%:LiteLLM 语义缓存完整配置指南

大模型成本直降 50%&#xff1a;LiteLLM 语义缓存完整配置指南 【免费下载链接】litellm The fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedroc…

作者头像 李华
网站建设 2026/9/3 12:48:37

言论收集系统开发实战:从技术选型到性能优化全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 12:48:23

markitdown:一条命令把EPUB电子书变成结构化Markdown笔记

markitdown&#xff1a;一条命令把EPUB电子书变成结构化Markdown笔记 【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown 手头有一本200页的EPUB教材&…

作者头像 李华