网页爬虫 - python模拟登录UESTC信息门户
本文介绍了网页爬虫 - 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屋!
查看全文