首页 > 其他分享 >Scrapy_FormRequest对象的使用

Scrapy_FormRequest对象的使用

时间:2023-06-25 16:23:12浏览次数:39  
标签:对象 formdata FormRequest 表单 响应 Scrapy dict response

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

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

  • 从Response中获取表单的数据

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

  • formdata参数类型为:dict
class scrapy.http.FormRequest(url[, formdata, ...])

返回一个新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,表单数据将在不点击任何元素的情况下提交

请求使用示例

通过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
)

响应对象

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 获取文本
import scrapy
from scrapy.http import FormRequest

class FormSpider(scrapy.Spider):
    name = "form" #爬虫名
    allowed_domains = ["域名.com"]
    # start_urls = ["https://www.域名.com/login/"]

    def start_requests(self):
        formdata = {
            'username': '[email protected]',
            'password': '12313215',
            'login_type': '1',
        }
        yield FormRequest("https://www.域名.com/login/",formdata=formdata)
    def parse(self, response):
        price = response.xpath('//span[@class="price_em2"]/text()').get()
        print(price)

 

标签:对象,formdata,FormRequest,表单,响应,Scrapy,dict,response
From: https://www.cnblogs.com/jiangjiayun/p/17503220.html

相关文章

  • 面向对象
    面向对象面向过程面向过程:就是机械的思维方式,先干什么,在干什么,最后干什么,其核心就是过程代码案例,实现面向过程的例子:1.接受用户名和密码2.做逻辑处理,验证参数3.将数据写入文件中优点:把复杂的问题简单化,进而流程化缺点:扩展性差使用场景:对扩展性要求不高的地......
  • Scrapy_Request对象Cookie的演示
     Cookie的使用importscrapyclassCookieSpider(scrapy.Spider):name="爬虫名"allowed_domains=["域名.com"]start_urls=["url地址"]defstart_requests(self):forurlinself.start_urls:cookie......
  • python基础day31 面向对象
    面向过程在支持面向对象的语言中,都有两大范式:1.面向过程;2.面向对象面向过程:核心就是过程二字,即是先干什么,再干什么,最后干什么,就是机械式的思维方式举例: 把大象放进冰箱需要几步? 1.把冰箱门打开2.把大象放进去3.关上冰箱门代码案例:实现面向过程的例子......
  • Scrapy_Request对象dont_filter演示
    importscrapyclassBaiduSpider(scrapy.Spider):name="baidu"allowed_domains=["baidu.com"]start_urls=["https://baidu.com"]defparse(self,response):title=response.xpath('//title/text......
  • 类和面向对象编程
    一、两大范式支持面向对象的语言中,都有两大范式面向过程和面向对象1、面向过程:流程化、步骤化思维优点:复杂的问题简单化,进而流程化缺点:扩展性差,牵一发而动全身使用场景:对扩展性要求不高的地方,一般使用面向过程2、面向对象对象就是盛放数据"属性"和"方法"的结合体属性:简......
  • Python全栈工程师(7:面向对象高级进阶)
    面向对象高级语法部分类的字段、方法、属性经典类vs新式类Python2中:经典类--深度优先;新式类--广度优先Python3中:均为广度优先super()方法:抽象接口#/usr/bin/env.python#-*-coding:utf-8-*-importabcclassAlert(object):'''报警基类'''__metaclass__=abc.......
  • 函数对象与闭包(笔记整理)
    一、函数对象1.什么是函数对象函数对象是指:将函数作为变量保存在内存中的一种对象。就是把函数当成变量去使用,就是在函数调用阶段,将调用的函数赋一个变量名definner():print('函数名也是不加括号,其实就是一个地址')#print(inner)#<functioninnerat0x7f80180......
  • 根据文件对象下载文件
    constdoDownload=(item)=>{letaUrl=item.address;letextNameIcon=item.extName;letextName=item.name;if(extName.includes(".")){extName=extName.split(".")[0];}letxml=newXMLHttpRe......
  • [java] 利用反射,将对象A中与对象B中字段名相同的属性值赋予对象B
    前言:最近开发遇到了这样一个需求,前端提交的表单对应类是origin,但后端数据库表对应类是target,两者中有重合字段,origin类中有待处理字段(例如String[]ids),我想到的解决方案是将origin对象中与target对象的同名字段值赋予target,再将待处理字段拆分后赋予target进行存储。首先想到的就......
  • Scrapy 中 Request 的使用
    爬虫中请求与响应是最常见的操作,Request对象在爬虫程序中生成并传递到下载器中,后者执行请求并返回一个Response对象一个Request对象表示一个HTTP请求,它通常是在爬虫生成,并由下载执行,从而生成Response参数url(string)-此请求的网址callback(callable)-将使用此请求的响......