网页爬虫 - python模拟登录UESTC信息门户

查看:195
本文介绍了网页爬虫 - python模拟登录UESTC信息门户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

刚学爬虫想来模拟登录一下学校的信息门户,可是不知道哪里出了问题
代码:

import requests
from bs4 import BeautifulSoup

# 获取要post的信息
r = requests.get('http://portal.uestc.edu.cn')
data = {}
soup = BeautifulSoup(r.content, 'lxml')
tags = soup.find_all('input', type='hidden')
for tag in tags:
    data[tag['name']] = tag['value']
data['password'] = 'Iwonttellyou'
data['username'] = '2016060107030'


post_header = {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0',
}

payload1 = {
    'service': 'http://portal.uestc.edu.cn/index.portal',
}

loginurl = 'http://idas.uestc.edu.cn/authserver/login'
s = requests.Session()
d = s.post(loginurl, data=data, params=payload1, headers=post_header)
print(d.status_code)
print(d.history)
geturl = 'http://portal.uestc.edu.cn'
r = s.get(geturl)
print(r.text)

输出:

200
[<Response [302]>]
其余和登录界面的html一样

相关信息:

post之后重定位了两次
这是post和两个get

信息门户没有验证码,不知道是哪里出了错,希望有人能说一下思路,感谢。

解决方案

因为没有帐号密码,所以没办法测试是不是登录成功,不过应该差不多
你的get和post需要有同一个session里面,才能保证cookies一致

import requests
from pyquery import PyQuery as Q

url = 'http://idas.uestc.edu.cn/authserver/login'

session = requests.Session()
session.headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'
}

r = session.get(url)

info = Q(r.text).find('input[type="hidden"]')
data = {info(_).attr('name'): info(_).attr('value') for _ in info}
data['username'] = '1111'
data['password'] = '2222'

r = session.post(url, data=data)

print r.text

这篇关于网页爬虫 - python模拟登录UESTC信息门户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆