python 访问网页aspx_Python 3 笔记

前几天在爬学校的考试系统,不过用 Requests 操作登入不管怎样就是进不去,后来发现表单提交数据中还有三栏隐藏的神秘资讯,Google 后才发现,原来 ASPX 页面要登入可不是单单打密码这么简单,这篇文章就让我们来教学如何爬 ASPX 页面吧。

首先我们要找到表单的隐藏资讯,使用 Chrome 打开登入页面,并右键 > 检查,切换到 Network 页面,接着,输入 错误 的账号密码,并提交,提交后会发现旁边的 Network 页面多了一些纪录资讯出来

图中的 Form Data 字段,就是我们登入所需要的所有数据啦

上图以学校考试系统为例,表单的提交资讯还包含了__VIEWSTATE

__VIEWSTATEGENERATOR __EVENTVALIDATION,这三个隐藏资讯,拿到这些东西之后就可以准备继续动工了

继续动工

首先开头我们先引入 BeautifulSoup 和 requests

我使用的版本为:Python 3.7、BeautifulSoup4

1

2from bs4 import BeautifulSoup

import requests

接着是重点部分

1

2

3

4

5

6

7

8

9

10

11

12

13

14with requests.Session() as s:

page = s.get('https://portal.stust.edu.tw/examseat/login.aspx')

soup = BeautifulSoup(page.content, 'lxml')

payload_loginPage = {

'txtStud_No': 'YOUR USERNAME',

'txtPasswd': 'YOUR PASSWORD',

'Button1': '登入'

}

payload_loginPage["__VIEWSTATE"] = soup.select_one("#__VIEWSTATE")["value"]

payload_loginPage["__VIEWSTATEGENERATOR"] = soup.select_one("#__VIEWSTATEGENERATOR")["value"]

payload_loginPage["__EVENTVALIDATION"] = soup.select_one("#__EVENTVALIDATION")["value"]

s.post('https://portal.stust.edu.tw/examseat/login.aspx', data=payload_loginPage)

第 1 行:首先我们把 Requests 模块中的 session 功能叫出并简称为 s

第 2 行:利用 HTTP Requests Methods 中的 GET 方法取得登入页面,并存于 page 当中

关于 HTTP Requests Methods,可以看这边的说明 英文版、中文版

第 3 行:使用 Beautiful Soup 对 page 的内容(content) 进行处理

第 5-9 行:表单的可视化部分,冒号前方为表单字段名称,后方为字段数值

第 11-13 行:自动带入这一坨隐藏资讯的数值,

第 14 行:最后就是把上面一坨的数据用 POST 的方式送交到表单进行验证啰

成功与否

如何知道成功与否呢?

最简单的方式就是透过印出下一页的数据来确认,所以可在最后面加上

1

2page = s.get('https://portal.stust.edu.tw/examseat/Default.aspx')

print(page.text)

第 1 行:取得下一页

第 2 行:印出页面源代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值