Python爬虫实战——模拟登录教务系统

之前都是爬静态页面,不用登录的,这次试试有登录的。

网页的登录主要是发送POST请求到服务器,得到响应后跳转到登录界面。每次登录,浏览器都会记录下cookie信息,在python中,可以用urllib,urllib2来获取cookie信息,然后利用cookie信息来模拟登录。当然还是得输入登录名和密码的。

先在浏览器上登录教务系统,登录后查看POST请求里面请求信息,就可以看到发送了什么信息过去了。


源码如下,用了两种方式,分别是urllib,urllib2和request

import urllib
import urllib2
import cookielib
import requests

# 要传送的表单数据
user_data = {
    "typeid": "2",
    "user": "******",
    "pass": "******"
}
# 写入cookie的文件
filename = 'cookie.txt'
# 声明一个CookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
# 利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
# 通过handler来构建opener
opener = urllib2.build_opener(handler)
# 传送用户名和密码
post_data = urllib.urlencode(user_data)
login_url = '******'
# 学校网站采用了反爬虫策略,要伪装浏览器访问
headers = {'User-Agent': '*******'}
req_login = urllib2.Request(url=login_url, headers=headers)
# 使用opener模拟登录网页,并把cookie保存到变量
response = opener.open(req_login, post_data)    # data要在open的时候传上去
# 保存cookie到本地文件
cookie.save(ignore_discard=True, ignore_expires=True)
# 利用cookie进去需要抓信息的网页
grade_url = '******'
# 请求访问该网址
grade_response = opener.open(grade_url)
print grade_response.read().decode('gbk')

# 用request试试
s = requests.session()
login_url = '*****'
headers = {'******'}
# 模拟发送登录请求
login = s.post(login_url, data=user_data, headers=headers)
print login.content
# 访问成绩页面
grade_url = '******'
response = s.get(grade_url, cookies=login.cookies, headers=headers)
print response.content

不得不说,request真的是write for human!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值