/1 前言/
嘿,各位小伙伴们晚上好呀,今天小编又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞!
原计划是不打算使用selenium的,但是因为要涉及点赞,所以免不了登录。但事实证明,我又被啪啪打脸了,抽屉的登录是真的难,各种参数把我干懵了。无赖之下,我还是捡起了selenium,难逃真香定律呐,哈哈哈。
好了,废话不多说,直接进入正题吧!
/2 准备工作/
万年不变的套装...
Chromedriver:浏览器驱动,可以理解为一个没有界面的chrome浏览器。
Selenium:用于模拟人对浏览器进行点击、输出、拖拽等操作,就相当于是个人在使用浏览器,也常常用来应付反爬虫措施。
/3 抽屉点赞机制/
我们都知道,要想点赞,就需要知道是谁点的,登录以后需要等保存状态,一般有cookie,seeeion,token三种形式,那么抽屉的是怎么玩的呢?我们来图解一下,如下图所示。
![366f4d2e545d121b3686f76d27875695.png](https://i-blog.csdnimg.cn/blog_migrate/3ef1b10048fb82d0afa5305e24c8d727.jpeg)
通过上图,我们一目了然,能看出来,只要我们登录了之后,拿到了cookie,以后就不用selenium啦!所以,我们这里将登录获取cookie和点赞进行分离,分开进行,逻辑也十分的清晰,而且一点儿也不耽误事情。
/4 登录预热/
抽屉url:https://dig.chouti.com/,直接放这了。
一个热榜资讯社区,大概长这个样子,如下图所示,内容还是挺不错的。
![665d1f2569dd4dadb46d0d8ccab6fe9b.png](https://i-blog.csdnimg.cn/blog_migrate/1454b4d7985dc07d11d364f31c33837b.jpeg)
在上图我们可以看到右上方的登录按钮,在左侧可以看到需要点赞的图标以及点赞数,评论数和收藏数等等,接下来我们先进行第一步自动登录。
/5 开始登录/
点击右上方的登录按钮,页面将会进行跳转,进入到一个登录界面,如下图所示。
![ea14d5a43ce11daeedf1b7e12d532d57.png](https://i-blog.csdnimg.cn/blog_migrate/cea1cda8f05bba10a8595b4d1e94e203.jpeg)
弹出登录模态对话框,接下来我们使用selenium来开始盘它了,直接上代码,如下所示。
![763ca50df51f591502cc7f59417d337f.png](https://i-blog.csdnimg.cn/blog_migrate/3d9b06b9ef8b63e25bb4fdf571654162.jpeg)
注意事项1:介于篇幅和排版原因,这里只是给出了一个代码截图,完整代码我在文末留了github链接,回头可以直接去down即可。
因为此登录是模态对话框,所以用selenium是不能点击登录按钮的,需要执行js代码,如下图所示。
![1739c174200add53a9c73eaf6984a956.png](https://i-blog.csdnimg.cn/blog_migrate/484f60f14fbc452aabc28c1530e79c84.jpeg)
Cookie是怎么玩的呢,我他把写在了本地,但是测试发现selenium获取cookie不全,所以我们依然使用js获取。
![9d63751adcb9b74287677042b2b83192.png](https://i-blog.csdnimg.cn/blog_migrate/c2db88159cff3869e9827c6caee2d0ac.jpeg)
注意事项2:抽屉如果登录多了,可能会让输入滑块验证码之类的,本文这部分并未有进行处理。
/6 自动登录示例效果图/
自动登录的效果图如下图所示:
![9af27bbeac67b8fa115dfbfedbaf5fb2.png](https://i-blog.csdnimg.cn/blog_migrate/ddae1ea9a05fbbf1e6ffef4d9dd77a3e.jpeg)
/7 开始自动点赞/
在上面的工作中,我们已经成功的拿到登录返回的cookie了,接下来我们就开始自动点赞,而且有了之前的基础,下面的事情我们就好办多了。
我们首先需要看一下,点赞请求的是哪个接口。我们清空一下浏览器中的NetWork日志,点击第一个文章的赞按钮,如下图所示。
![9d63751adcb9b74287677042b2b83192.png](https://i-blog.csdnimg.cn/blog_migrate/c2db88159cff3869e9827c6caee2d0ac.jpeg)
我们可以看到,这个接口发的是post请求,但是发送的是什么数据呢?我们下滑继续一探究竟。
![88c68676b2a60d4266753162d1b55bc2.png](https://i-blog.csdnimg.cn/blog_migrate/90099d278222f05bb369c52e7328485e.jpeg)
可以看到在Form Data里边,有一个linkid:29213534,是一串长数字,这个是什么呢?马上揭晓!
使用浏览器与网页的交互功能,我们点击对应的文章,那么很快我们就可以锁定这个linkid,如下图所示。
![a05055a4bdddb8eb712b432d79792918.png](https://i-blog.csdnimg.cn/blog_migrate/f51cce4019f0aed5e35ba80916908cb9.jpeg)
相信大家肯定都看得出来,其实post的那一串数字其实就是文章ID。换句话说,我们只需要把这个ID都获取到,放到post构造数据里边,程序一运行,就可以实现点赞啦!
/8 代码实现/
下面是部分代码截图,完整代码在文末,如下图所示。
![d218e904dfd561631e300cbd9d0e8d5c.png](https://i-blog.csdnimg.cn/blog_migrate/24a3a4cee52152e7be8508ba508f4224.jpeg)
注:这里只是测试了前10个文章。
/9 抽屉自动点赞效果图/
为了方便大家查看,我做了一个简单的小动态图给大家,详情如下。
![583d7c570ab2adef69db93d4ff250dd3.png](https://i-blog.csdnimg.cn/blog_migrate/2b95f86575335f645158cdd4e51168d4.jpeg)
如果动图看的不是很清晰的话,不用慌,小编已经把原图放到github上了,大家可以去访问看看,很清晰,如下图所示。github链接在文末,欢迎大家来戳!
![b9524fe93432821cd7efc7bd61cda686.png](https://i-blog.csdnimg.cn/blog_migrate/b51c3e8d1ec7460c3779106c167c6eac.jpeg)
/10 抽屉自动点赞效果图/
代码详情我已经上传到github这里了:https://github.com/cassieeric/python_crawler/tree/master/autoVote。如果觉得还不错,记得给个star噢,感想小伙伴们的支持!