环境:python3.x
外部依赖包:requests
github项目地址
主要的问题:模拟登陆:
知乎现在改用https请求了,数据加密,但是问题不大,重要的是网页数据改动了,而且在请求时后台会对爬虫做一些判断,因此在每次请求是都需要加上request header,尽可能接近浏览器请求的样子。
言归正传
登陆的数据依旧没变动
通过chrome开发者工具可以了解到。
但是有时候需要用到验证码,所以,我的爬虫直接下载验证码到本地,想要尝试验证码自动识别的同学,可以移步我另一篇文章简单验证码识别,虽然那篇文章只讲数字验证码的识别,但是基本思想是一样的(不过知乎目前的验证码识别有点难度了)。
_xsrf这个数据在登陆网页上可以找到,虽然发生了变动,但是依然可以通过正则找出来。
登陆函数大概是这样的:
函数初次登陆,需要账号和密码,之后,程序会自动记录一个cookie文件,在当前文件夹下,下次运行程序就不需要再输入密码和账号了,读写cookie文件的程序大概是这样:
from python_zhihu import ZhiHu
zh=ZhiHu()
//下载某个问题下的高赞答案:
zh.get_answer_text('某问题的url')
//这个方法会下载某个问题下的高赞文字答案,存储在一个txt文件中
//下载某个问题下所有的图片:
zh.get_answer_img('某问题的url')
// 这个方法会下载某个问题下的答案中的所有图片,并且按照回答人的昵称归类
目前更新只是保证正常的爬取知乎,后期可能会加上更多功能,敬请期待....
star,please......