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.py、spiders/目录、scrapy.cfg等):
scrapy startproject myproject项目结构模板文件位于 scrapy/templates/project/。
genspider则基于预置模板生成爬虫文件,<name>会成为爬虫名,<domain>会自动写入allowed_domains和start_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_itemparse 会真实抓取 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 个实用技巧,让命令行效率翻倍
-h是最好的文档:每个命令都支持scrapy <command> -h,比翻手册更快。- 先 shell 后 crawl:写爬虫时先用
scrapy shell验证选择器,再写进parse(),最后才scrapy crawl,能省掉大量“跑半天才发现选错了”的返工。 - 输出格式自由组合:
-o file.csv/-O file.json里的格式可以是 csv、json、xml、jl 等(导出机制见 scrapy/exporters.py)。 - 用 settings 排错:怀疑代理、UA、限速没生效时,
scrapy settings --get <KEY>一步到位确认最终值。 - 自定义命令扩展:继承
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),仅供参考