python爬虫——模拟登陆教务系统

目录

  • python urllib库的使用
  • python带cookie的爬取方法

首先来说一下python爬取页面的基本方法即urllib库的使用:

import urllib2

response = urllib2.urlopen("http://www.baidu.com")
print response.read()
如代码段,使用urllib2库中的urlopen方法获取一个response对象,然后调用read()方法就可以获取网页源代码。

但是我们在实际应用中有时候需要向服务器发送Get或者Post请求参数,这种需求的话显然urlopen()函数已经不能满足,这就需要另外的方法——Request

request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()

这是最简单的一种Request方法,跟上面的代码实现的效果是一样的,如果要带上参数的话就参考以下代码:

POST:

4
5
6
7
8
9
import urllib
import urllib2

values = {"username":"[email protected]","password":"XXXX"}
data = urllib.urlencode(values) 
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print response.read()

GET:

import urllib2

values={}
values['username'] = "1016903103@qq.com"
values['password']="XXXX"
data = urllib.urlencode(values) 
url = "http://passport.csdn.net/account/login"
geturl = url + "?"+data
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print response.read()

接下来是要说的是有些网页需要我们登陆后才能访问,这时候就需要我们用带cookie的爬取方法——Opener

当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例)。在前面,我们都是使用的默认的opener,也就是urlopen。它是一个特殊的opener,可以理解成opener的一个特殊实例,传入的参数仅仅是url,data,timeout。

如果我们需要用到Cookie,只用这个opener是不能达到目的的,所以我们需要创建更一般的opener来实现对Cookie的设置。

下面直接代码说明:
#/usr/bin/env python
#-*-coding:utf-8-*-

import urllib
import urllib2
import cookielib


#cookielib
filename='cookie.txt'
#声明一个CookieJar对象实例来保存cookie
cookie=cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

#header
values = {"USERNAME":"xxxxxxxx","PASSWORD":"xxxxxxx"}
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36',
'Referer':'http://jxgl.gdufs.edu.cn/jsxsd/',
'Accept-Language':'zh-CN,zh;q=0.8,en;q=0.6',
'Accept-Encoding': 'gzip, deflate',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Content-Type': 'application/x-www-form-urlencoded'
}
data=urllib.urlencode(values)
loginurl='http://jxgl.gdufs.edu.cn/jsxsd/xk/LoginToXkLdap'
request=urllib2.Request(loginurl,data,headers)
#此处的open方法同urllib2的urlopen方法,也可以传入request
result=opener.open(request)
cookie.save(ignore_discard=True,ignore_expires=True)


#爬取主页面
mainurl='http://jxgl.gdufs.edu.cn/jsxsd/framework/xsMain.jsp'
result=opener.open(mainurl)
print result.read().decode('utf-8')

python爬虫——模拟登陆教务系统_第1张图片

你可能感兴趣的:(python,python,cookie,爬虫)