zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

Python百度方法智能 获取 三种 __
2023-09-11 14:21:44 时间

 

学习目标:

       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方法如何获取请大家自行百度,有很多大牛写的挺不错!正则表达式也是!