Python 使用requests登录知乎

环境

Python3.5.1
Windows 10

直接上代码

# -*- coding:utf-8 -*-

from requests import Session
from bs4 import BeautifulSoup
import json
from PIL import Image

# zhihu主站
baseurl = "https://www.zhihu.com"
# 使用email登录url
email_login = "https://www.zhihu.com/login/email"
# 通过httpbin测试post请求格式
testurl = "https://httpbin.org/post"
email = "123@123.com"
password = "123456"
# session可以跨请求保存和传递cookies
s = Session()

# 初始化header
# 修改User-Agent
s.headers.update(
    {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" +
        " AppleWebKit/537.36 (KHTML, like Gecko)" +
        " Chrome/51.0.2704.106 Safari/537.36"})


# 后续POST表单需要xsrf,GET和登录时不需要
'''
soup = BeautifulSoup(s.get(baseurl).text, "lxml")
xsrf = soup.input["value"]
print(xsrf)
'''

form_data = dict(
    password=password,
    email=email,
    remember_me="true")
# _xsrf=xsrf)

# 获取验证码
with open("cap.gif", "wb") as f:
    f.write(s.get(
        baseurl + "/captcha.gif?"+ "type=login").content)
img = Image.open("cap.gif")
img.show()

# 手动输入验证码
captcha = input("输入验证码: ")
form_data["captcha"] = captcha

# POST登录
r = s.post(email_login, data=form_data)
rjson = json.loads(r.text)
print(rjson["msg"])

# 获取昵称
r = s.get("https://www.zhihu.com/settings/profile")
soup = BeautifulSoup(r.text, "lxml")
rename_section = soup.find(id="rename-section")
print("你的昵称: " + rename_section.span.string)

输出结果

d:\workspace\test>python requests_test.py
输入验证码: emvx
登录成功
你的昵称: ***
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 可以看我的博客 lmwen.top 或者订阅我的公众号 简介有稍微接触python的人就会知道,python中...
    ayuLiao阅读 8,432评论 1 5
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,261评论 25 709
  • 时光如水,我如鱼。游走在时间里,忘记了水,也忘记了生活,只是因为生活在水里。正如在无涯的时间中行走,忘记了时间本来...
    丘禾阅读 4,645评论 0 2