python3.x爬虫 urllib和requests实现模拟登陆的具体步骤详解

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

实现模拟登陆总体来说有两种大方向的方法,一种是利用自带的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)

猜你喜欢

转载自blog.csdn.net/explorer9607/article/details/83149408