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. CA证书扫盲,https讲解。

    很多关于CA证书的讲解. 1.什么是CA证书. 看过一些博客,写的比较形象具体. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有 ...

  2. Visual Studio 2017 Enterprise (15.3)

    版本15.3更新在用户离线下载时更加人性化,包含了进度显示,下载出错可以输入R,进行下载的重新尝试,并在当前下载框下继续下载为完成的作业,结合 --layout 参数的离线文件的检查和修复,并且在下载 ...

  3. php用正则匹配出图片img标签中的src路径(兼容)

    用php抓图片是个常用的需求,下面提供一个比较兼容的正则表达式来实现php抓取出页面.字符串中所有图片的src. 下面是一个范例,能匹配各种标签格式写法的图片,不管src在什么地方,还是单引号.双引号 ...

  4. 解决`向github提交代码是老要输入用户名密码`

    在命令行输入命令:git config --global credential.helper store☞ 这一步会在用户目录下的.gitconfig文件最后添加: [credential] help ...

  5. 【国家集训队2010】小Z的袜子[莫队算法]

    [莫队算法][国家集训队2010]小Z的袜子 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程, ...

  6. iOS实现微信外部H5支付完成后返回原APP

    看到微信最近放开了微信H5支付,公司决定把H5集成到多款APP上.下面记录下了开发过程. 由于是微信新推出的支付方式,在网上搜索到的相关资料并不多,其中有一篇文件(点此跳转)对我的整个开发过程起到了很 ...

  7. TripleDES加密解密

    参考:http://www.cnblogs.com/chnking/archive/2007/08/14/855600.html 参考:http://blog.csdn.net/change_from ...

  8. R语言包的安装

    pheatmap包的安装 1: 首先R语言的安装路径里面最好不要有中文路径 2: 在安装其他依存的scales和colorspace包时候要关闭防火墙 错误提示: 试开URL'https://mirr ...

  9. Yii2自带的验证码背景颜色怎么调?

    看了下面的这张图片你就知道啦!

  10. Python后端(一)——客户端/服务端

    网址组成(四部分) 协议      http, https(https 是加密的http) 主机      g.cn zhihu.com之类的网址 ,因此一般不用填写 路径      下面的「/」和「 ...