Python网络爬虫之遇到需要登录的网站怎么办?

当我们在爬取某些网站的时候,

需要登录才可以获取数据,

怎么办?


登录的常见方法无非是这两种:

  1. 让你输入帐号和密码登录;
  2. 让你输入帐号密码+验证码登录。


我们先来说说第一种帐号和密码登录,验证码的下篇文章再说。

第一招:Cookie大法!

你平常在上某个不为人知的网站的时候,

是不是发现你只要登录一次,

就可以一直看到你想要的内容,

过了一阵子才需要再次登录,

这就是因为 Cookie 在做怪。

简单来说,

就是每一个使用这个网站的人,

服务器都会给他一个 Cookie,

那么下次你再请求数据的时候,

你顺带把这个 Cookie 传过去。

服务器一看,

诶,老客户啊,

登录过,

直接返回数据给他吧。

该服务中还可以设置 Cookie 的有效时间,

也就是说,

当你下次携带一个过期了的 Cookie 给服务器的时候,

服务器虽然知道你是老客户,

但是还是需要你重新再登录一次,

然后再给你一个有效的 Cookie,

Cookie 的时长周期是服务器那边定的。


了解了这一点之后,

我们就来玩一下吧。

我们以「逼乎」为例,

https://biihu.cc/account/login/

输入地址之后,

按一下 F12,

点击 network 标签,

然后登录你的帐号,

然后点击其中一个,

你就可以看到在 Request Headers 有你的 Cookie。

Python网络爬虫之遇到需要登录的网站怎么办?

有了 Cookie 之后,

我们在代码中直接获取我的个人信息。

Python网络爬虫之遇到需要登录的网站怎么办?

运行后可以发现不用登录就可以直接拿到自己的个人信息了。

Python网络爬虫之遇到需要登录的网站怎么办?

第二招:表单请求大法

很简单,

就是通过抓包,

获取请求登录的时候需要用到的用户名密码参数,

然后以表单的形式请求服务器,

小编前面的文章已经讲过怎么用python伪装成浏览器,以表单提交数据,

有兴趣的可以看看前面的文章。

第三招:Selenium 自动登录法

大家应该已经看过了,

相信你们已经学会了Selenium的使用了!

用Selenium,我们可以:

获取到两个输入框的元素,

再获取到登录按钮,

往输入框写你的帐号密码,

然后自动点击一下登录。

Python网络爬虫之遇到需要登录的网站怎么办?

登录完之后拿到 Cookie:

<code>cookies = webdriver.get_cookies()/<code>

有了 Cookie 你就可以拿到你想要的数据了。


下篇文章我们学习一下账号密码+验证码搞定网站登录问题!


分享到:


相關文章: