【python百度智能云】:Python — 三种获取__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION方法。

本文介绍使用Python通过正则表达式、XPath及BeautifulSoup三种方法获取网页中的__VIEWSTATE、__VIEWSTATEGENERATOR和__EVENTVALIDATION值,适用于表单提交等场景。

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

 

学习目标:

       Python 获取获取__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION;相信很多python做CFC 函数调用、云函数、提交Form表单的时候,获取打开网页的三个值,并且提交表单.......有各种情况会使用到,这次我们总结三种常见方法,仅供参考!也欢迎大家一起讨论交流。


第一种方法:正则表达式解决(正则表达式:正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。)

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。

# 正则表达式解决

def get_VIEWSTATE(r):
    pattern1=r'VIEWSTATE\".*value=\".*\"'
    match=re.search(pattern1, r).group(0)
    pattern2 = r'VIEWSTATE\" id=\"__VIEWSTATE\" value=\"'
    match1 = re.split(pattern2, match)
    return match1[1][:-1]  # 返回_VIEWSTATE


def get_EVENTVALIDATION(r):
    pattern1 = r'EVENTVALIDATION\".*value=\".*\"'
    match = re.search(pattern1, r).group(0)
    pattern2 = r'EVENTVALIDATION\" id=\"__EVENTVALIDATION\" value=\"'
    match1 = re.split(pattern2, match)
    return match1[1][:-1]  # 返回_EVENTVALIDATION


def get_VIEWSTATEGENERATOR(r):
    pattern1 = r'VIEWSTATEGENERATOR\".*value=\".*\"'
    match = re.search(pattern1, r).group(0)
    pattern2 = r'VIEWSTATEGENERATOR\" id=\"__VIEWSTATEGENERATOR\" value=\"'
    match1 = re.split(pattern2, match)
    return match1[1][:-1]  # 返回_EVENTVALIDATION


login_url  #指的是网页超链接

html_yiban = session.get(login_url)
VIEWSTATE = get_VIEWSTATE(html_yiban.text)
VIEWSTATEGENERATOR = get_VIEWSTATEGENERATOR(html_yiban.text)
EVENTVALIDATION = get_EVENTVALIDATION(html_yiban.text)
print(VIEWSTATEGENERATOR)

第二种方法:xpath方法解决(xpath:XPath,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历

  • XPath 使用路径表达式在 XML 文档中进行导航
  • XPath 包含一个标准函数库
  • XPath 是 XSLT 中的主要元素
# xpath方法解决

from lxml import etree

login_url  #指的是网页超链接

html = etree.parse(login_url, etree.HTMLParser())
VIEWSTATE = html.xpath("//input[@id='__VIEWSTATE']/@value")
VIEWSTATEGENERATOR = html.xpath("//input[@id='__VIEWSTATEGENERATOR']/@value")
print(VIEWSTATEGENERATOR)
EVENTVALIDATION = html.xpath("//input[@id='__EVENTVALIDATION']/@value")

第三种方法:BeautifulSoup方法解决(BeautifulSoup方法:提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。)

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。

# BeautifulSoup方法解决

from bs4 import BeautifulSoup

login_url  #指的是网页超链接

html_yiban = session.get(login_url).content
bsObj = BeautifulSoup(html_yiban, "html.parser")
VIEWSTATE = bsObj.find('input', {'id': '__VIEWSTATE'}).attrs['value']
VIEWSTATEGENERATOR = bsObj.find('input', {'id': '__VIEWSTATEGENERATOR'}).attrs['value']
print(VIEWSTATEGENERATOR)
EVENTVALIDATION = bsObj.find('input', {'id': '__EVENTVALIDATION'}).attrs['value']

总结

        以上方法亲测有效,具体需要大家自己摸索一下,根据自己获取的网页代码从而进行更改,xpath方法如何获取请大家自行百度,有很多大牛写的挺不错!正则表达式也是!

爬取正方教务数据可以使用 Python 中的 requests 库和 BeautifulSoup 库。以下是一个简单的示例代码,可以爬取正方教务系统的成绩数据: ```python import requests from bs4 import BeautifulSoup # 登录信息 username = '你的学号' password = '你的密码' # 构造请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 登录页面 login_url = 'http://jwgl.xxx.edu.cn/default2.aspx' # 获取验证码 captcha_url = 'http://jwgl.xxx.edu.cn/CheckCode.aspx' # 构造会话 session = requests.Session() # 获取登录页面,保存 cookie response = session.get(login_url, headers=headers) # 解析页面,获取 __VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION 等参数 soup = BeautifulSoup(response.text, 'html.parser') view_state = soup.find('input', attrs={'name': '__VIEWSTATE'})['value'] view_state_generator = soup.find('input', attrs={'name': '__VIEWSTATEGENERATOR'})['value'] event_validation = soup.find('input', attrs={'name': '__EVENTVALIDATION'})['value'] # 获取验证码 captcha_response = session.get(captcha_url, headers=headers) with open('captcha.jpg', 'wb') as f: f.write(captcha_response.content) captcha = input('请输入验证码:') # 登录 data = { '__VIEWSTATE': view_state, '__VIEWSTATEGENERATOR': view_state_generator, '__EVENTVALIDATION': event_validation, 'txtUserName': username, 'TextBox2': password, 'txtSecretCode': captcha, 'Button1': '', 'lbLanguage': '', 'hidPdrs': '', 'hidsc': '' } response = session.post(login_url, data=data, headers=headers) # 获取成绩页面 score_url = 'http://jwgl.xxx.edu.cn/xscjcx.aspx?xh=' + username + '&xm=' response = session.get(score_url, headers=headers) # 解析页面,获取成绩信息 soup = BeautifulSoup(response.text, 'html.parser') table = soup.find('table', attrs={'class': 'datelist'}) rows = table.find_all('tr')[1:] for row in rows: columns = row.find_all('td') print(columns[0].text, columns[1].text, columns[3].text) ``` 需要注意的是,每个学校的正方教务系统可能会有不同的登录方式和页面结构,需要根据具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值