【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站

欢迎关注【哈希大数据】获取详细信息!!!

Python如何实现模拟登陆爬取

Python实现模拟登陆的方式简单来说有三种:一、采用post请求提交表单的方式实现。二、利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入cookies值来实现登陆。三、采用模拟浏览器的方式登陆。

三种方式各有利弊,采用第一种方式每次运行程序都是重新登陆,容易造成封账号的情况出现,同时不能用在验证码是JS加载生成的和查看不到提交表单格式这两种情况。我认为第二种方式优于第一种和第三种,大多数情况下推荐使用第二种。对于较大规模的采集,一般的做法是利用大量小号采用第一或第三种方式定期生成大量的cookies,保存起来形成一个自己的cookie池,并维护其有效性,在采集时调用cookie池中的cookies完成爬取。

本次分享以登陆豆瓣为例讲解前两种登陆方式。

第一种提交post请求的方式

首先讲解第一种方式,其重点有两个:一是找到网站的登陆网址;二是找到post请求提交的表单格式。以豆瓣为例豆瓣的登陆网址为:https://accounts.douban.com/login 这里要注意通讯协议是https而不是http 。接下来解决如何查看网站登陆提交的表单格式。这里使用的是chrome浏览器。

在浏览器中打开网址:https://www.douban.com/,出现如下图所示页面

《【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站》 image

点击快捷键F12打开开发者工具,选中Network,并勾选Preserve log,输入假的账号或密码,不输入验证,如下图所示。

《【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站》 image

点击登陆豆瓣按钮,选中login页面,点击headers,翻到最后面,可以看到formdata,如下图所示:

《【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站》 image

如图所示豆瓣登陆需要提交的以下关键字:

  1. source:index_nav

  2. form_email:你的账号

  3. form_password:密码

  4. captcha-solution:验证码

  5. captcha-id:HzglLIfrAxX6maSpZSJPsDAW:en(验证码所对应的id)

知道表单格式后下面开始编写爬虫代码。

模拟登陆使用requests库和re库,豆瓣前几次登陆是不需要输入验证码的,只输入账号密码就可以,但登陆几次后由于其反爬虫机制的作用,就需要输入验证码了,所以程序中需要判断本次登陆是否需要输入验证码,本程序处理验证码的方式比较简单粗暴,就是自己看验证然后手动输入,完成登陆。

部分代码如图所示:

《【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站》 image

想要查看完整代码请关注公众号并回复:db

第二种利用登陆cookies的方式

第二种方式操作起来相对比较简单,首先打开浏览器,打开豆瓣首页,完成登陆。在登陆完成的页面点击快捷键F12打开开发者工具,选中Network,并勾选Preserve log,更新当前页面。选中www.douban.com页面,点击headers,在Request Headers中,可以看到Cookie,把它复制粘贴下来。

《【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站》 image

完成以上操作后,可以完成利用cookie传入的方式实现模拟登陆了。在完成登陆后在程序中尝试了获取标题、摘要、和图片链接如下图所示,获取到数据后存储到MongoDB数据库中。

《【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站》 image

部分代码如下图所示:

《【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站》
image

想要查看完整代码请关注公众号并回复:db2

需要注意的是代码中用到了faker库需要先安装好,可以直接在命令窗口中输入:pip install faker 进行安装。

小结

本次分享主要介绍了Python实现模拟登陆的两种方式,第一种是采用post请求提交表单的方式实现。第二种是利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入cookies值来实现登陆。这里以豆瓣为例完成了具体实现。这里要提醒大家现在豆瓣反爬机制很严厉,短时间内多次登陆很容易被永久封号,所以想练习的请申请一个小号!!!

    原文作者:哈希大数据
    原文地址: https://www.jianshu.com/p/8a7c822e3d2d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞