scrapy模拟登录
为什么需要模拟登录
获取登录后的页面的信息
获取cookie
回顾:
requests模块是如何模拟登录的?
1.直接携带cookie请求页面
headers={
"User-Agent": "",
'Cookie':''
}
response=requests.get(url,headers=headers)
2.找接口发送post请求存储cookie
# 将cookie字符串转化为一个字典形式
response=requests.get(url,headers=headers,cookies=cookies)
3.session实现会话保持
import session
session=requests.session()
data={
"email":"",
"password":""
}
response=session.post(url,headers=headers,data=data)
response2=session.get("http://www.renren.com/973016491/profile")
selenium是如何实现登录的?
找到对应的input标签,输入文字后点击登录按钮就可以实现登录
scrapy模拟登录
1.直接携带cookie
应用场景
1.cookie过期时间很长,常见于一些不规范的网站
2.能够在cookie过期之前把所有的数据拿到
3.配合其他的程序使用,比如先使用selenium把登录之后的cookie信息获取并保存在本地(数据库中),然后我们使用scrapy发送请求之前先读取本地的cookie信息start_urls地址的请求是谁发送呢?
为什么我们要知道srart_urls对应的请求是谁发送的呢?
如果说最开始srart_urls这个地方放置的url地址是我们登陆之后才能够访问的url地址,比如说是我们12306的个人主页,我们直接请求一定是拿不到12306的个人主页的,那么我们在构造start_urls之前需要额外做一些事情。
比如说我们需要请求人人网的个人主页,如果我们直接去请求肯定是不成功的,所以在请求之前,在构造请求之前需要对start_urls请求自定义一些设置,自己尝试着通过某一些方法去构造关于url地址的请求,比如说加上cookie信息,加上之后就可以成功了。srart_urls对应的请求是谁发送的呢?
我们定义在spider下的start_urls=[]默认都是交给start_requests处理的,所以说如果必要的话,我们可以重写start_requests方法
def start_requests(self):
cls = self.__class__
if not self.start_urls and