python requests 自动管理cookie, session保持连接,抓取数据后结束

本文介绍如何利用Python的requests和BeautifulSoup库,通过编写代码实现模拟登录大学网站,进而查询个人成绩的过程。文章包括登录流程、数据解析及成绩查询的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写的一个模拟登陆自己学校aao.neu.edu.cn里面进行成绩查询python代码。


import requests

Target='http://202.118.31.197/ACTIONLOGON.APPPROCESS'
Data={"WebUserNO":"#####","######":"86458043",
      "Agnomen":" ","submit.x":"-664","submit.y":"-166",
      "applicant":"ACTIONQUERYSTUDENTSCHEDULEBYSELF"}
r = requests.post(Target,Data)
print r.text

这一段是最简单的requests模块登陆。 之后获得html页面就可以用  


BeautifulSoup模块进行处理了。

from bs4 import BeautifulSoup

html = r.text 

soup = BeautifulSoup(html)

soup.find("div")

之后调用soup模块就可以定点查询。定点查所要的数据了。


提供两个链接  http://www.crummy.com/software/BeautifulSoup/bs4/doc/ 这是BeautifulSoup的用法。


跟 http://docs.python-requests.org/en/latest/  requests的用法。。  


两个都很详细。。


然后查成绩就麻烦一点了。要开session。查询两次。。

import requests

Target='http://202.118.31.197/ACTIONLOGON.APPPROCESS'
Data={"WebUserNO":"######","Password":"#####",
      "Agnomen":" ","submit.x":"-664","submit.y":"-166",
      "applicant":"ACTIONQUERYSTUDENTSCHEDULEBYSELF"}
s = requests.session()
r1 = s.post(Target,Data)

print r1.text
T2 = 'http://202.118.31.197/ACTIONQUERYSTUDENTSCORE.APPPROCESS'
D2 = {"YearTermNO":"18"}
r2 = s.post(T2,D2)
print r2.text

之后同样用  BeautifulSoup处理

### 使用 Python 的 `requests` 库通过 Session 实现自动登录孔夫子旧书网 要实现使用 Python 的 `requests` 库通过 Session 登录孔夫子旧书网,可以按照以下方法操作: #### 准备工作 首先需要安装必要的库。如果尚未安装 `requests` 和其他可能需要用到的工具包,则可以通过 pip 安装它们。 ```bash pip install requests beautifulsoup4 lxml ``` #### 请求分析 在尝试自动化登录之前,需了解目标网站的登录机制。通常情况下,登录表单会提交用户名和密码到指定 URL,并返回一个认证令牌或设置 Cookie 来维持用户的登录状态。对于孔夫子旧书网,其登录页面可能会涉及 CSRF Token 或验证码等安全措施[^1]。 以下是具体实现代码示例: ```python import requests from bs4 import BeautifulSoup def login_kongfz(username, password): # 创建一个Session对象用于保持Cookie session = requests.Session() # 获取登录页HTML以提取CSRF token或其他隐藏字段 (如果有) login_url = 'https://login.kongfz.com' # 替换为目标实际URL response = session.get(login_url) soup = BeautifulSoup(response.text, 'lxml') csrf_token = None try: # 假设csrf_token位于meta标签或者input hidden中 meta_tag = soup.find('meta', attrs={'name': 'csrf-token'}) if meta_tag and 'content' in meta_tag.attrs: csrf_token = meta_tag['content'] elif not csrf_token: input_field = soup.find('input', {'type': 'hidden', 'name': '_token'}) if input_field and 'value' in input_field.attrs: csrf_token = input_field['value'] except Exception as e: print(f"Error extracting CSRF token: {e}") # 构建POST数据字典 post_data = { 'username': username, 'password': password, '_token': csrf_token or '', # 如果有csrf则加入post data } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', 'Referer': login_url, 'Content-Type': 'application/x-www-form-urlencoded', } # 发送POST请求模拟登录动作 result = session.post( url=login_url, data=post_data, headers=headers ) if result.status_code == 200: after_login_html = result.text # 验证是否成功跳转至个人中心或者其他受保护资源页面 if '/mycenter/' in after_login_html.lower(): print("Login successful!") return True print("Failed to log in.") return False if __name__ == "__main__": user_name = "your_username_here" pass_word = "your_password_here" success = login_kongfz(user_name, pass_word) if success: # 可在此处继续执行已登录状态下所需的操作... pass ``` 注意:以上代码仅为示范用途,在真实环境中还需要考虑更多细节如异常处理、动态加载内容解析以及反爬虫策略等问题[^2]。 #### 关键点说明 - **Session管理**:利用 `requests.Session()` 对象来保存并重用 Cookies。 - **CSRF防护绕过**:许多现代Web应用都会采用跨站点请求伪造(CSRF)防御技术,因此需要从初始GET响应中抓取相应的Token值作为额外参数传递给服务器验证。 - **Header定制化**:适当伪装浏览器行为有助于提高成功率减少被封禁风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值