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

如何在命令行的Scrapy Shell中传递表单数据

解决Scrapy Shell中传递表单数据的问题

你直接在scrapy shell命令后追加formdata参数的方式是行不通的——因为scrapy shell的启动命令本身不支持这样的参数格式,那些formdata会被当成系统shell的命令行参数,根本没被Scrapy处理到。下面给你两种正确的操作方式:

方法一:进入Shell后用fetch()发送FormRequest

  1. 先启动Scrapy Shell:
    scrapy shell
    
  2. 在Shell会话中导入FormRequest并发送POST请求:
    from scrapy.http import FormRequest
    # 替换成你要提交的目标URL,记得加http/https前缀
    fetch(FormRequest(url='https://abcwebsitexyz.com', formdata={'username': 'user_name', 'password': 'password'}))
    
  3. 发送完成后,直接用response变量查看返回的响应内容即可。

方法二:手动构建请求并获取响应

如果需要更灵活的控制,可以手动创建请求对象再发送:

from scrapy.http import FormRequest
req = FormRequest(
    url='https://abcwebsitexyz.com',
    formdata={'username': 'user_name', 'password': 'password'},
    # 可选:如果需要模拟浏览器头,可以加headers参数
    # headers={'User-Agent': 'Mozilla/5.0...'}
)
response = fetch(req)
# 查看响应结果
print(response.text)

额外提示

  • 确认目标URL是否正确:很多网站的表单提交地址(action属性)和当前页面URL不一致,建议先在浏览器开发者工具里查看表单的实际提交地址。
  • 记得给URL加上http://或https://前缀,否则Scrapy无法识别为有效URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:35:07