You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapyd技术问题:如何获取已部署项目的爬虫列表或版本?

解决Scrapyd获取爬虫列表/版本的API调用问题

我来帮你搞定这个Scrapyd的API调用问题,你碰到的两个麻烦其实都是小细节导致的,咱们逐个解决:

1. 解决zsh中curl命令报错的问题

你在zsh里直接执行curl http://localhost:6800/listspiders.json?project=crawler时提示“no matches found”,这是因为zsh会把?当作通配符来匹配本地文件,而不是把它当作URL的查询字符串分隔符。

解决方法很简单,把整个URL用引号包裹起来,或者转义?就行:

  • 用单引号包裹URL(推荐,避免其他特殊字符解析问题):
    curl 'http://localhost:6800/listspiders.json?project=crawler'
    
  • 或者转义?:
    curl http://localhost:6800/listspiders.json\?project=crawler
    

这样zsh就不会乱解析URL了,能正确发送GET请求到Scrapyd。

2. 为什么POST方式调用会报错?

你尝试用POST方式(-d参数)调用listspiders.json时收到的错误提示“Expected one of [b'HEAD', b'object', b'GET']”已经说得很清楚了:这个API端点只支持GET或HEAD请求,不支持POST。

Scrapyd的不同API端点支持的请求方法不一样,比如schedule.json这类操作类接口支持POST,但listspiders.json、listprojects.json这类查询类接口都是只支持GET的,所以必须用查询字符串的方式传递参数。

3. 获取爬虫版本(listversions)的正确方式

与获取爬虫列表的逻辑完全一致,同样用GET请求,把URL换成listversions.json即可:

curl 'http://localhost:6800/listversions.json?project=crawler'

同样要注意用引号包裹URL来避免zsh的通配符解析问题。

你可以先试试上面的命令,应该就能正常返回你需要的爬虫列表和版本信息了~

内容的提问来源于stack exchange,提问作者merlin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:52:31