首先使用Chrome浏览器查看登录和操作的过程中发送了哪些数据,然后使用库实现参数post,以获得网页。
现在可以正常登录退出,以后应该增加对网页的分析,这才是这个脚本的目的。
具体代码如下:
#coding=utf-8
import sys,urllib,urllib2,time
from HTMLParser import HTMLParser
class Bbs:
def __init__(self):
self.url='http://bbs.ustc.edu.cn/cgi/bbsindex'
self.psy_url='http://bbs.ustc.edu.cn/cgi/bbstdoc?board=Psychology'
self.loginurl='http://bbs.ustc.edu.cn/cgi/bbslogin'
self.logouturl='http://bbs.ustc.edu.cn/cgi/bbslogout'
self.sec_url='http://bbs.ustc.edu.cn/cgi/bbsdoc?board=SecondHand'
userid='***'
userpw='***'
self.params = urllib.urlencode([('id',userid),
('pw',userpw)])
def login(self):
self.req= urllib2.Request(self.loginurl)
self.fd = urllib2.urlopen(self.req,self.params)
self.data = self.fd.read(1024)
print self.data
print '\nLogin Success\n'
def logout(self):
self.req = urllib2.Request(self.logouturl)
self.fd = urllib2.urlopen(self.req)
self.data = self.fd.read(1024)
#sys.stdout.write(self.data)
print '\nLogout Success\n'
def get_psy(self):
# default in theme mode
self.req = urllib2.Request(self.psy_url)
self.fd = urllib2.urlopen(self.req)
self.fd = urllib2.urlopen(self.req)
self.data = self.fd.read()
print self.data
print '\nPsy Success\n'
def get_sec(self):
# default in theme mode
self.req = urllib2.Request(self.sec_url)
self.fd = urllib2.urlopen(self.req)
time.sleep(1)
self.fd = urllib2.urlopen(self.req)
self.data = self.fd.read()
print self.data
print '\nPsy Success\n'
bbs=Bbs()
time.sleep(1)
bbs.get_sec()
time.sleep(1)
bbs.logout()
以后有时间会进一步完善。