java爬虫抓取网页数据(想了解Python爬虫模拟登陆知乎的相关内容吗(组图))
优采云 发布时间: 2022-01-18 13:14java爬虫抓取网页数据(想了解Python爬虫模拟登陆知乎的相关内容吗(组图))
想知道Python爬虫模拟登录知乎的相关内容吗?本文将为大家讲解python模拟登录知乎的相关知识以及一些代码示例。欢迎阅读和指正。重点:python,模拟登录知乎,python,爬虫,模拟登录,python,爬虫,知乎一起学习。
之前写过一篇用python爬虫爬取电影天堂资源文章的文章,重点是如何解析页面,提高爬虫效率。由于电影天堂中资源的访问权限对每个人都是一样的,所以无需登录验证操作。写完那个文章,又抽时间研究了网上的python模拟登陆。有很多关于这部分的信息。demos全部登录知乎的原因是知乎的登录比较简单,只需要post几个参数就可以保存cookie了。而且它还没有加密。很适合教学。我也是新手,经过一点点探索,终于成功登陆知乎。
首先说一下爬虫模拟登录的基本原理。我也刚刚开始接触一些深层次的东西。首先,一个重要的概念是cookie。我们都知道HTTP是一种无状态协议,也就是说当浏览器客户端向服务器提交请求,服务器响应响应时,它们之间的连接就会中断。结果,当客户端向服务器发送请求时,服务器无法判断这两个客户端是否相同。这绝对是不可能的。这就是cookies发挥作用的地方。当客户端向服务器发送请求时,服务器会为其分配一个标识符(cookie)并将其保存到客户端本地。当客户端再次发送请求时,会连同cookie一起发送到服务器。当服务器看到cookie时,原来是你,这是你的,拿去吧。所以爬虫模拟登录就是模拟浏览器客户端的行为。首先,将您的基本登录信息发送到指定的 url 服务器。验证成功后,会返回一个cookie。我们可以使用此 cookie 进行后续的爬取工作。.
我这里用chrome的开发者工具抓包,不过你也可以用fiddler、firebug等,不过作为前端er,你对chrome有特殊的爱好。准备好工具接下来打开知乎的登录页面,勾选#signin我们可以很容易的看到发送的请求就是登录信息。当然,我是用手机登录,用邮箱登录。最后一个是电子邮件。
所以我们只需要将数据发布到这个地址
phone_num 登录名
密码密码
captcha_type 验证码类型(这个参数在这里没有实际作用)
rember_me 记住密码
_xsrf是一个隐藏的表单元素知乎,用来防御CSRF(对于CSRF,请在此处打开)我发现这个值是固定的,所以就写在这里了。有兴趣的可以写个正则表达式把这部分值提取出来,这样比较严谨。
当您看到服务器返回此信息时,表示您已成功登录
{"r":0,
"msg": "\u767b\u5f55\u6210\u529f"
}#翻译过来就是 “登陆成功” 四个大字
然后就可以用这个身份去爬知乎上的页面了
page=opener.open("https://www.zhihu.com/people/yu-yi-56-70")
content = page.read().decode('utf-8')
print(content)
这段代码通过实例化一个opener对象来保存登录成功后的cookie信息,然后通过opener带着cookie访问服务器上关于身份的完整页面。比较复杂的,比如微博登录,把请求的数据加密,然后写出来,有时间分享给大家。
相关文章