python爬虫模拟登录(二)----重庆理工大学数字化校园
来源:互联网 发布:续命八丸 知乎 编辑:程序博客网 时间:2024/04/26 03:59
模拟登录重庆理工大学数字化校园
同理登录豆瓣,重理工数字化校园登录过程也较简单,所以不多解释
前期工作同样是在浏览器登录后通过工具获取提交的那些数据表单,然后在源代码中找到这些数据项,并通过正则表达式将他们提取出来,在写程序过程同样遇到了几个问题:
1、cookie的获取失败,因为自己获取cookie时的逻辑或者是对库方法的不熟悉导致的
2、ip代理的实效导致url error无法访问到地址
将问题解决掉啦,这就很舒服,下面直接上源码
# login_i_cqut.py# coding: utf-8# 登录重庆理工大学数字化校园import urlparseimport urllibimport urllib2import cookielibimport reimport webbrowserclass CQUT: def __init__(self, username, password): self.loginUrl = 'http://i.cqut.edu.cn/zfca/login' self.username = username self.password = password self.cookies = cookielib.CookieJar() self.headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Host': 'i.cqut.edu.cn', 'Referer': 'http://i.cqut.edu.cn/zfca/login', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': '221' } self.postData = { 'useValidateCode': '', 'isremenberme': '', 'ip': '', 'username': self.username, 'password': self.password, 'losetime': '30', 'lt': '', '_eventId': 'submit', 'submit1': '' # j_captcha_response 验证码 } # 登录主程序 def login(self): self.EnableCookieAndProxy() # 使用代理和cookie useValidateCode, isremenberme, ip, yzmUrl, lt = self.getData() # 获取表单提交数据 self.postData['useValidateCode'] = useValidateCode self.postData['isremenberme'] = isremenberme self.postData['ip'] = ip self.postData['lt'] = lt # 如果需要输入验证码 if yzmUrl: webbrowser.open_new_tab(yzmUrl) # 打开验证码图片 # 手动输入验证码 yzm = raw_input("请输入浏览器显示的验证码: ") self.postData['j_captcha_response'] = yzm data = urllib.urlencode(self.postData) print data result = urllib2.urlopen(self.loginUrl, data) print result.read().decode('gbk') # 使用代理和添加cookie def EnableCookieAndProxy(self): # 添加cookie cookieSupport = urllib2.HTTPCookieProcessor(self.cookies) # 添加代理 proxySupport = urllib2.ProxyHandler({'http': '124.88.67.54:80'}) # 使用代理 opener = urllib2.build_opener(proxySupport, cookieSupport, urllib2.HTTPHandler) urllib2.install_opener(opener) # 构建对应的opener def getData(self): print self.loginUrl page = urllib2.urlopen(self.loginUrl).read().decode('gbk') print "first cookie:" for i in self.cookies: print i.name, '=', i.value print page pattern = re.compile('<input.*?id="useValidateCode".*?value="(.*?)".*?<input.*?id="isremenberme".*?value="(.*?)".*?<input.*?id="ip".*?value="(.*?)".*?<div.*?id="yzm" style="(.*?)">.*?<input.*?id="j_captcha_response".*?<img.*?src="(.*?)".*?>.*?<input type="hidden" name="lt" value="(.*?)"', re.S) # 1 useValidateCode 2 isremenberme 3 ip 4 判断有误验证码 5 验证码链接 6 lt res = re.search(pattern, page) # res.group(4) 判断是否有验证码 res.group(5) 验证码链接, res.group(6) lt if "display" in res.group(4): # 如果没有验证码 yzmUrl = None # 验证码链接补充完整 else: yzmUrl = urlparse.urljoin(self.loginUrl, res.group(5)) print yzmUrl, "lt:", res.group(6).strip() return res.group(1).strip(), res.group(2).strip(), res.group(3).strip(), yzmUrl, res.group(6).strip()#测试代码cqut = CQUT("这是学号", "这是密码")cqut.login()
0 0
- python爬虫模拟登录(二)----重庆理工大学数字化校园
- Python爬虫 模拟登录
- Python爬虫与模拟登录
- python -- 拉勾网爬虫模拟登录
- Python模拟登录东北大学校园IP网关
- 重庆理工大学
- python爬虫实践之模拟登录
- 转载:python爬虫实践之模拟登录
- Python爬虫之模拟登录总结
- python爬虫模拟登录初体验
- Python爬虫教程——模拟登录
- python爬虫实践之模拟登录
- Python 网络爬虫--简单的模拟登录
- python爬虫2-简单模拟用户登录
- Python爬虫笔记之模拟登录
- 转载-Python爬虫之模拟登录总结
- Python爬虫之模拟CSDN网站登录
- python爬虫登录豆瓣(二)
- java连接sqlserver2012数据库方法
- 欢迎使用CSDN-markdown编辑器
- ubuntu16.04 apport
- js学习笔记归档梳理(2)
- Java关键字final、static使用总结
- python爬虫模拟登录(二)----重庆理工大学数字化校园
- 【新人初试】关于gazebo学习的那些参考链接
- 【程序8】输出9*9口诀
- java基础之super()、this()方法
- 简单创建Android状态栏通知
- jQuery的ajax详解
- Codeforces Round #405 B.Bear and Friendship Condition
- 2017 春
- cin输入流的中要注意点