scrapy登录有两种方式,一个是直接加cookie,一个是走一遍登录的流程,常用的肯定是走登录流程了。
走登录流程时,一般都是post请求,在scrapy中post请求有两种方式,第一种
#重写start_request请求
def start_requests(self) -> Iterable[Request]:
url = "https://www.xxx.com/user/login"
username = 'xxx'
pswd = 'xxxx'
yield scrapy.Request(url=url,body=f'loginName={username}&password={pswd}', callback=self.parse())
#成功登录后自动携带cookie。
这种写法中的body与平时把data写进字典中不同,需要拼接,不太方便,所以我常用第二种
#同样的需要重写start_request
def start_requests(self) -> Iterable[Request]:
url = 'https://www.xxxx.com/user/login'
formdata = {
'loginName': 'xxx',
'password': 'xxx'
}
}
yield scrapy.FormRequest(url=url, formdata=formdata,callback=self.parse)
这种写法是用scrapy中的FormRequest请求,这种请求默认就是post请求,把data以字典的格式放入formdata中就可以了。
登陆流程都知道,只是记录一下scrapy中好用的post请求方式。