模拟登陆知乎

最近开始整理自己学过的东西 我对爬虫比较有兴趣 ,最近和知乎叫上劲了 打算爬知乎 今年经过一上午 的努力终于登陆上了 这算是花式爬知乎的第一篇打算以后就围绕知乎进行爬虫的学习和整理以前学过的知识。

爬取知乎 首先要对知乎进行登陆(没说必须登陆,也可以不登录的),然后下面就是我爬的一些过程

1 第一步去知乎首页
这里写图片描述

到这页面以后打开F12进入谷歌浏览器的开发者页面
这里写图片描述
在这个页面在进行一系列 的操作,模拟知乎登陆需要,其中最重要的是_xsrf这个可以在网页的源代码里获得

_xsrf = re.findall(‘name=”_xsrf” value=”(.*?)”/’,html)通过简单的正则就可以获得 在有了_xsrf (这个_xsrf我发现是固定的 我不知道别人的是什么样子的 我

的是固定的)以后 我们需要找到他的登录的url,这个时候你在network里面勾上,然后去登陆框里打上一个错误的账号密码 ,你会发在

phone_num(email)这里面找到登陆的url

这样就可以构造表单进行提交了

这样 就完事具备了 下面我就把代码发上去

import time,re
from http import cookiejar
import requests

headers = {
“Host”: “www.zhihu.com”,
“Referer”: “https://www.zhihu.com/“,
‘User-Agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87’
}
s = requests.Session()
s.cookies = cookiejar.LWPCookieJar(filename=’cookies.text’)
try:
print(s.cookies )
s.cookies.load(ienore_discard =True )
except :
print(“还没有cookies信息”)
def get_xsrf():
response = s.get(“https://www.zhihu.com“, headers=headers, verify=False)
html = response.text
_xsrf = re.findall(‘name=”_xsrf” value=”(.*?)”/’, html)
return _xsrf
def get_jpg():
t = str(int(time.time()*1000))
jpg_url = ‘https://www.zhihu.com/captcha.gif?r=’ + t + “&type=login”
r = s.get(jpg_url , headers=headers)
with open(‘jpg.jpg’,’wb’) as f:
f.write(r.content)
jpg = input(‘验证码:’)
return jpg
def login(phone_num,password):
login_url = ‘https://www.zhihu.com/login/phone_num
data = data = {
‘email’: phoen_num ,
‘password’: password,
‘_xsrf’: get_xsrf(),
“captcha”: get_jpg(),
‘remember_me’: ‘true’
}
print(s.cookies )
response = s.post(login_url,data=data,headers=headers )
login_code = response.json()
print(login_code[‘msg’])
print(s.cookies )
r = s.get(“https://www.zhihu.com/settings/profile“, headers=headers)
print(r.status_code )
print(r.text)
with open(‘zhiuh.html’,’wb’) as f:
f.write(r.content )

if name ==”main“:
phoen_num = “*
password = “**
login( phoen_num, password)

这样就可以登陆成功了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值