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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫--运用cookie模拟登录知乎相关的知识,希望对你有一定的参考价值。

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

import requests
import http.cookiejar
from bs4 import BeautifulSoup
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登录:

import requests
import http.cookiejar as cookielib
session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename=cookie)
try:
    session.cookies.load(ignore_discard=True)
except:
       print("Cookie 未能加载")
def isLogin():
    url = "https://www.zhihu.com/"
    login_code = session.get(url, headers=headers, allow_redirects=False).status_code
    if login_code == 200:
        return True
    else:
        return False
if __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
    }
    if isLogin():
        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       

以上是关于python爬虫--运用cookie模拟登录知乎的主要内容,如果未能解决你的问题,请参考以下文章

怎样用Python设计一个爬虫模拟登陆知乎

怎样用Python设计一个爬虫模拟登陆知乎

Python爬虫 —— 知乎之selenium模拟登陆+requests.Session()获取cookies

python爬虫--模拟登录知乎

简单NodeJS爬虫和使用cookie进行模拟登录

Python爬虫之urllib模拟登录及cookie的那点事