【小白学爬虫连载(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 进行安装。
小结
【【小白学爬虫连载(10)】--如何用Python实现模拟登陆网站】本次分享主要介绍了Python实现模拟登陆的两种方式,第一种是采用post请求提交表单的方式实现。第二种是利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入cookies值来实现登陆。这里以豆瓣为例完成了具体实现。这里要提醒大家现在豆瓣反爬机制很严厉,短时间内多次登陆很容易被永久封号,所以想练习的请申请一个小号!!!

    推荐阅读