我有一个包含数据的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中
答案 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