python 模拟登录获取cookie_python爬虫--运用cookie模拟登录知乎

前面已经介绍过,运用表单填写帐号,用户名的方式模拟登录知乎。若登录成功,则之后就可以利用cookie登入,无需重复之前步骤。

importrequestsimporthttp.cookiejarfrom bs4 importBeautifulSoup

session=requests.Session()

session.cookies= http.cookiejar.LWPCookieJar("cookie")

agent= ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.1.2.3000 Chrome/55.0.2883.75 Safari/537.36‘headers={"Host": "www.zhihu.com","Origin":"https://www.zhihu.com/","Referer":"http://www.zhihu.com/",‘User-Agent‘:agent

}

postdata={‘password‘: ‘*******‘, #填写密码

‘account‘: ‘********‘, #填写帐号

}

response= session.get("https://www.zhihu.com", headers=headers)

soup= BeautifulSoup(response.content, "html.parser")

xsrf= soup.find(‘input‘, attrs={"name": "_xsrf"}).get("value")

postdata[‘_xsrf‘] =xsrf

result= session.post(‘http://www.zhihu.com/login/email‘, data=postdata, headers=headers)

session.cookies.save(ignore_discard=True, ignore_expires=True)

运行后,在代码所在文件夹中出现cookie文件。

现在加载cookie登录:

importrequestsimporthttp.cookiejar as cookielib

session=requests.session()

session.cookies= cookielib.LWPCookieJar(filename=‘cookie‘)try:

session.cookies.load(ignore_discard=True)except:print("Cookie 未能加载")defisLogin():

url= "https://www.zhihu.com/"login_code= session.get(url, headers=headers, allow_redirects=False).status_codeif login_code == 200:returnTrueelse:returnFalseif __name__ == ‘__main__‘:

agent= ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.1.2.3000 Chrome/55.0.2883.75 Safari/537.36‘headers={"Host": "www.zhihu.com","Origin": "https://www.zhihu.com/","Referer": "http://www.zhihu.com/",‘User-Agent‘: agent

}ifisLogin():print(‘您已经登录‘)

运行后显示:您已经登录。

cookielib模块的主要作用是提供可存储cookie的对象,以便于requests模块配合使用来访问Internet资源。Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

它们的关系:CookieJar —-派生—->FileCookieJar  —-派生—–>MozillaCookieJar和LWPCookieJar

默认的是FileCookieJar没有实现save函数。

而MozillaCookieJar或LWPCookieJar都已经实现了。

所以可以用MozillaCookieJar或LWPCookieJar,去自动实现cookie的save。

CookieJar

/

FileCookieJar

/                   \

MozillaCookieJar      LWPCookieJar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值