学习目标:
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方法如何获取请大家自行百度,有很多大牛写的挺不错!正则表达式也是!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73654.html