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/,出现如下图所示页面

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

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

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

  1. source:index_nav
  2. form_email:你的账号
  3. form_password:密码
  4. captcha-solution:验证码
  5. captcha-id:HzglLIfrAxX6maSpZSJPsDAW:en(验证码所对应的id)

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

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

部分代码如图所示:

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

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

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

部分代码如下图所示:

【小白学爬虫连载(10)】–如何用Python实现模拟登陆网站的更多相关文章

  1. python requests 模拟登陆网站,抓取数据

    抓取页面数据的时候,有时候我们需要登陆才可以获取页面资源,那么我们需要登陆以后才可以跳转到对应的资源页面,那么我们需要通过模拟登陆,登陆成功以后再次去抓取对应的数据. 首先我们需要通过手动方式来登陆一 ...

  2. 第十四章 web前端开发小白学爬虫

    老猿从事IT开发快三十年了,接触互联网也很久了,但自己没有做过web前端开发,只知道与前端开发相关的一些基本概念,如B/S架构.html标签.js脚本.css样式.xml解析.cookies.http ...

  3. 第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

    第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别 第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://gith ...

  4. Python实现模拟登陆

    大家经常会用Python进行数据挖掘的说,但是有些网站是需要登陆才能看到内容的,那怎么用Python实现模拟登陆呢?其实网路上关于这方面的描述很多,不过前些日子遇到了一个需要cookie才能登陆的网站 ...

  5. 第14章 web前端开发小白学爬虫结束语

    老猿学爬虫应该是2019年7月初开始的,到现在2个多月了,有段时间了,这部分一直是老猿期待能给大家带来收获的,因为老猿爬虫实战应用的场景与网上老猿已知的场景基本都不一样,是从复用网站登录会话信息来开发 ...

  6. Python爬虫(二十二)_selenium案例:模拟登陆豆瓣

    本篇博客主要用于介绍如何使用selenium+phantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*- from sel ...

  7. python+requests模拟登陆 学校选课系统

    最近学校让我们选课,每天都有不同的课需要选....然后突发奇想试试用python爬学校选课系统的课程信息 先把自己的浏览器缓存清空,然后在登陆界面按f12 如图: 可以看到登陆时候是需要验证码的,验证 ...

  8. python selenium模拟登陆163邮箱。

    selenium是可以模拟浏览器操作. 有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容.所以可以模拟浏览器去登陆该网站进行爬取操作. 需要安装selenium通过pip install xx ...

  9. Python脚本模拟登陆DVWA

    目录 requests模拟登陆 Selenium自动化测试登陆 环境:python3.7 windows requests模拟登陆 我们登陆DVWA的时候,看似只有一步:访问网站,输入用户名和密码,登 ...

随机推荐

  1. [HAOI2009]毛毛虫

    题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 ). 输入输出格 ...

  2. 有关static静态方法知识的收集

    1.何时使用静态方法: 如果某些操作不依赖具体实例,那它就是静态的,反之如果某些操作是依赖具体实例的(例如访问一个特定会员的名称),那它就应该是实例化的. 2.静态方法和实例方法的区别主要体现在两个方 ...

  3. c语言环境初始化&c语言和汇编混合编程

    bootloader通常会分为两个阶段:第一阶段采用汇编语言来编写,主要是一些核心的初始化工作(内存,时钟的初始化),第二阶段使用C语言来编写,主要是它会完成一些板载硬件的初始化(串口,网口)然后其启 ...

  4. socketlog的安装和使用

    socketlog的使用范围  socketlog比较适用于ajax调试和api的调试,经典应用莫不过于微信众多的api使用调试,使用socketlog可以很条理清楚的查看到api传递的参数,加载的性 ...

  5. GO开发:接口

    接口 接口定义 Interface类型可以定义一组方法,但是这些不需要实现.并且interface不能包含任何变量. type example interface{ Method1(参数列表) 返回值 ...

  6. IDA学习笔记 函数调用约定

    stdcall和cdecl: stdcall和cdecl 压栈方向都是从右到左 区别在于c约定是调用方在函数返回后add esp,n指令清除堆栈中的参数,而stdcall在被调函数内使用ret n来清 ...

  7. CSS 圣杯布局升级版---多个固定宽度一个自适应宽度

    1.一个div固定,一个div自适应宽度.两种情况,固定在左或者在右. HTML: <div class="box1"> <div class="mai ...

  8. Jupyter 初体验

    简介 Jupyter notebook 是一个非常强大的工具,可以创建漂亮的交互式文档. 安装 安装环境:win7专业版32位系统 + python 3.6.4 安装命令:pip install ju ...

  9. C++学习,两个小的语法错误-network-programming

    1.bool CServerSocket::initSocket(const char* ip=NULL,const UINT &port)://会出现默认参数为2的错误 解决方案: //C+ ...

  10. zoj 3962 Seven Segment Display 数位dp

    非常好的一个题,可以比赛时想到的状态太奇葩,不方便转移,就一直没能AC. 思路:dp(i, j)表示已经考虑了前i位,前i位的和为j的贡献.如果当前的选择一直是最大的选择,那么就必须从0~下一位的最大 ...