python请求的data属性在scrapy Request中的位置

时间:2019-09-17 07:33:31

标签: python scrapy python-requests

我有一个包含数据的python请求,我不得不将其替换为scrapy请求,但是我找不到方法将这些数据放置在scrapy请求中

data = '{"username":"xyz@gmail.com","password":"123"}'

response = requests.post('https://my.matterport.com/api/v2/user/login/', data=data)

我在哪里将数据放置在scrapy请求中

Request('https://my.matterport.com/api/v2/user/login/', callback=self.foo)

或在草率的FormRequest中

3 个答案:

答案 0 :(得分:1)

您似乎正在寻找this part of the documentation

您尝试过

FormRequest('https://my.matterport.com/api/v2/user/login/', 
            formdata=data, callback=self.foo)

答案 1 :(得分:0)

有两种方法可以执行此请求。一种方法是使用 scrapy.spiders Request ,另一种方法是使用 FormRequest 。如果是简单的请求,则只需要提及请求的方法(在您的情况下为POST),但是FormRequest默认情况下设置为POST。

如果使用Scrapy请求:

form scrapy.spiders import Request
data = {"username":"xyz@gmail.com","password":"123"}
Request('https://my.matterport.com/api/v2/user/login/', method='POST', callback=self.foo, body=json.dumps(data))

如果使用FormRequest:

data = {"username":"xyz@gmail.com","password":"123"}
FormRequest('https://my.matterport.com/api/v2/user/login/',  formdata=data, callback=self.foo)

答案 2 :(得分:-1)

 request_with_cookies = Request(url="http://www.example.com",
                           cookies=[{'name': 'currency',
                                    'value': 'USD',
                                    'domain': 'example.com',
                                    'path': '/currency'}])

或尝试这样(不强制上课)

import scrapy

def authentication_failed(response):
    # TODO: Check the contents of the response and return True if it failed
    # or False if it succeeded.
    pass

class LoginSpider(scrapy.Spider):
    name = 'example.com'
    start_urls = ['http://www.example.com/users/login.php']

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

def after_login(self, response):
    if authentication_failed(response):
        self.logger.error("Login failed")
        return

显示此链接可能会帮助您https://doc.scrapy.org/en/latest/topics/request-response.html