Scrapy FormRequest对象的使用

Scrapy_FormRequest对象的使用

image-20220628193352966

FormRequest是Request的扩展类,具体常用的功能如下:

  • 请求时,携带参数,如表单数据

  • 从Response中获取表单的数据

FormRequest类可以携带参数主要原因是:增加了新的构造函数的参数formdata。其余的参数与Request类相同.

  • formdata参数类型为:dict

class scrapy.http.FormRequest(url[, formdata, …])

class method from_response(response[, 
formname=None, formid=None, formnumber=0, 
formdata=None, formxpath=None, formcss=None,
 clickdata=None, dont_click=False, ...])

返回一个新FormRequest对象,其中的表单字段值已预先<form>填充在给定响应中包含的HTML 元素中.

参数:

  • response(Responseobject) - 包含将用于预填充表单字段的HTML表单的响应
  • formname(string) - 如果给定,将使用name属性设置为此值的形式
  • formid(string) - 如果给定,将使用id属性设置为此值的形式
  • formxpath(string) - 如果给定,将使用匹配xpath的第一个表单
  • formcss(string) - 如果给定,将使用匹配css选择器的第一个形式
  • formnumber(integer) - 当响应包含多个表单时要使用的表单的数量。第一个(也是默认)是0
  • formdata(dict) - 要在表单数据中覆盖的字段。如果响应元素中已存在字段,则其值将被在此参数中传递的值覆盖
  • clickdata(dict) - 查找控件被点击的属性。如果没有提供,表单数据将被提交,模拟第一个可点击元素的点击。除了html属性,控件可以通过其相对于表单中其他提交表输入的基于零的索引,通过nr属性来标识
  • dont_click(boolean) - 如果为True,表单数据将在不点击任何元素的情况下提交

1 请求使用示例

通过HTTP POST发送数据

FormRequest(
           url="http://www.example.com/post/action",
      formdata={'name': 'John Doe', 'age': '27'},
      callback=self.after_post
      )

通过FormRequest.from_response()发送数据

FormRequest.from_response(
      response,
      formdata={'username': 'john', 'password': 'secret'},
      callback=self.after_login
)

2 响应对象

class scrapy.http.Response(url[, status=200, 
headers=None, body=b'', flags=None, request=None])

一个Response对象表示的HTTP响应,这通常是下载器下载后,并供给到爬虫进行处理

参数:

  • url(string) - 此响应的URL
  • status(integer) - 响应的HTTP状态。默认为200
  • headers(dict) - 这个响应的头。dict值可以是字符串(对于单值标头)或列表(对于多值标头)
  • body(bytes) - 响应体。它必须是str,而不是unicode,除非你使用一个编码感知响应子类,如 TextResponse
  • flags(list) - 是一个包含属性初始值的 Response.flags列表。如果给定,列表将被浅复制
  • request(Requestobject) - 属性的初始值Response.request。这代表Request生成此响应
  • text 获取文本
  • 13
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

留不住的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值