python3.x爬虫 urllib和requests实现模拟登陆的具体步骤详解_python3抓取需要登录-程序员宅基地

技术标签: 爬虫  python  模拟登陆  

对于为什么用模拟登陆不用我多说,有些网站只有你登陆进去之后才可以看到内容,而没登录的话爬下来的网页一般只有登陆界面的那一点,所以对于这种网站,就需要能够模拟登陆的状态去爬取页面信息

实现模拟登陆总体来说有两种大方向的方法,一种是利用自带的urllib库,另外一种是使用requests库,下面来分别讲解一下这两种方法具体是如何实现的。

一、使用urllib

首先要明确具体的思路是什么,才能动手编码实现。

我们的目的是为了能够模拟登陆的状态去爬取网页内容,那么只要我们得到了服务器返回的登陆用户的cookie,就可以在之后的请求中将cookie加进去。

为了获得服务器返回的cookie,我们第一次需要模拟登陆过程,并保存返回的cookie,这时候就需要确定如下信息:

登陆界面的url是什么?请求包中的信息是什么?cookie应该如何获取和保存?

下面就是我们实现的具体步骤:

一、cookie的处理

  • 声明一个cookieJar的对象来保存cookie
  • 使用HTTPCookieProcessor来创建cookie处理器
  • 通过此处理器来构建opener
cookie_object = cookiejar.CookieJar()
handler = request.HTTPCookieProcessor(cookie_object)
opener = request.build_opener(handler)

二、构造登陆请求信息data

即登陆所需要的用户名以及登陆密码等,这个登陆信息的构造取决于你要登陆的网站是什么,所以具体情况要具体分析

data={
'username':"your name"
'password':"your psword"
}

三、利用opener和登陆请求信息打开登陆链接,获得cookie(loginurl 取决于你的登陆链接

req=urllib.request.Request(loginurl,data=data)
respon=opener.open(req)

四、利用带cookie的opener打开其他需要登陆才能操作的界面,爬取信息(myrequrl为你要爬取的网页)

res=opener.open(myrequrl)

具体的实例请参看我写的这篇文章:人人网模拟登陆

二、使用requests

使用requests就比较简单了,几行代码就可以搞定

import requests

#登录人人网的url
url0 = "http://www.renren.com/PLogin.do"
#登录到个人主页的url
url1 = "http://www.renren.com"
data = {'email':"yourname",
	'password':'yourpw'}
#进行登录,并保存cookie
req = requests.Session()

response = req.post(url0,data=data)
#可以直接访问个人主页了

zhuye = req.get(url1)
print(zhuye.text)

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/explorer9607/article/details/83149408

智能推荐

[MAC] 编译安装和测试《魔兽世界》模拟服务端 TrinityCore-程序员宅基地

文章浏览阅读618次。2019独角兽企业重金招聘Python工程师标准>>> ..._mac trinitycore

Windows驱动开发之日志打印 - TraceEvents_windows驱动开发 日志-程序员宅基地

文章浏览阅读3.6k次。《Windows驱动开发技术详解》一书中,介绍了一种“Windows驱动程序日志打印和查看的方法”,具体就是:在需要打印日志的地方,调用“KdPrint”函数,该函数类似标准C的printf(print file)函数。然后用“DebugView.exe”软件查看日志。一、引入事实上,微软也提供了一个日志打印和日志查看机制,它可以查看指定的驱动文件的日志,并..._windows驱动开发 日志

游戏玩家的程序猿之路-程序员宅基地

文章浏览阅读2.9k次,点赞6次,收藏2次。目录一.自我介绍二.编程目标三.学习编程的方法四.分配编程的时间五.最想进入的IT公司一.自我介绍大家好,这里是ONE_KICK,一名一名普通的大二学生,这是我的第一篇blog,现在还是一名编程小白,因为自己对于游戏的热爱决定开始学习基础的编程,来到CSDN,一方面是可以学习到很多的知识,另一方面是想要记录一下自己的学习历程。二.编程目标从零开始学习编程,打算先学习C语言,而后开始学习C++,近期的目标是在一年时间内掌握C++的用法。三.学习编程的方法打算稳扎稳打的学习C++,每天会有固定的时间

VC+API模拟键盘按键(详解篇)_vc模拟键盘输入-程序员宅基地

文章浏览阅读1.6w次。模拟键盘按键━━━━━━━━━━━━━━━━━━━━━━━━以前就想过如何模拟键盘按键向其他程序发送控制命令,但总是无功而返,这次也不例外。模拟按键的方法很多,如PostMessage(不能用SendMessage),SendInput,keybd_event。但最要命的是以上方法基本上都要窗口获取焦点时才有效。也就是想后台模拟键盘按键难度是很高的。当然有些特殊_vc模拟键盘输入

Docer容器客户端在启动的镜像的时候报错Error invoking remote method ‘docker-start-container‘: Error: (HTTP code 500_error invoking remote method 'docker-run-container-程序员宅基地

文章浏览阅读6.7k次,点赞8次,收藏3次。打开docker容器,启动redis镜像,报错:Error invoking remote method 'docker-start-container': Error: (HTTP code 500) server error - Ports are not available: listen tcp 0.0.0.0:2181: bind: An attempt was made to access a socket in a way forbidden by its access per._error invoking remote method 'docker-run-container': error: (http code 400)

数论模板-程序员宅基地

文章浏览阅读64次。组合数  递推void get_C(){ for(int i=0;i<=2005;i++) { C[0][i]=C[i][i]=1; for(int j=1;j<i;j++) { C[j][i]=(C[j-1][i-1]+C[j][i-1])%MOD; ..._inv2 数论

随便推点

100个免费可商用字体,你总有一天用到它-程序员宅基地

文章浏览阅读636次。我一个一个查授权、筛选证实可商用。你知道吗?你平时在电脑轻轻一点就能用的字体,属于法律保护的美术作品!当我们习惯于在网上搜刮各种字体,以为可以随便用在自己的设计图、网页(比如H5广告)上时,可能一直无意间伤害着创作者、版权人。以下整合出可能是最全的免费可商用字体,下载方式见文末——都是我一个一个查授权、筛选证实可以用的啊。最后提醒一下..._点字灵动体字体免费商用吗

openssl 1.1.1L /1.1.1o/1.1.1t rpm包制作——筑梦之路_libcrypto 1.1.1t-程序员宅基地

文章浏览阅读4.2k次,点赞6次,收藏11次。https://www.openssl.org/source/openssl-1.1.1l.tar.gzhttps://www.openssl.org/source/openssl-1.1.1l.tar.gzopenssl.spec文件内容Summary: OpenSSL 1.1.1l for CentOSName: opensslVersion: %{?version}%{!?version:1.1.1l}Release: 1%{?dist}Obsoletes: %{name} <=_libcrypto 1.1.1t

将MNIST手写数字数据集导入NumPy数组(《深度学习入门:基于Python的理论与实现》实践笔记)_ubyte.gz用什么打开-程序员宅基地

文章浏览阅读1.2k次,点赞6次,收藏12次。将MNIST手写数字数据集导入NumPy数组下载MNIST数据集(使用urllib.request.urlretrieve()函数)打开下载得到的.gz压缩文件(使用gzip.open()函数)并导入NumPy数组(使用np.frombuffer()函数)完整实例(能直接运行):可能遇到的问题:下载MNIST数据集(使用urllib.request.urlretrieve()函数)os.path.exists(path)可以判断是否存在以path为地址的文件。urllib.request.urlre_ubyte.gz用什么打开

【剧前爆米花--C语言篇】C语言数组底层原理详解_数组的底层逻辑-程序员宅基地

文章浏览阅读1k次,点赞15次,收藏13次。对C语言数组的详细剖析,以及底层理解,相信你一定有所收获_数组的底层逻辑

java--html(6)框架_h|keycount| html-程序员宅基地

文章浏览阅读950次。框架标签:< frameset> < frameset rows=”10%,*”> < frame src=”1.html” name=”top” /> < frameset cols=”30%,*”> < frame src=”2.html” name=”left_h|keycount| html

虚机修改yum源_虚拟机如何优化yum源-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏7次。修改yum的下载源_虚拟机如何优化yum源