Python根据源代码查找ViewState的值

3

我正在尝试编写一个程序来解码给定URL的视图状态。我知道存在类似的程序,但这更像是一种练习而不是一个项目。 在给定页面的HTML源代码中,如何获取视图状态表单元素的值。 我开始做这个:

def get_viewstate(html):
        i = html.index('id="__VIEWSTATE" value="')
        somedata = html[i+len('id="__VIEWSTATE" value="'):]

但我无法找到一种有效的方法,只检索到该元素值直到结束标签。 如何最有效地获取此表单元素的值?


2
最好的方法是解析HTML。 - thefourtheye
1
从性能的角度来看,“最有效的方式”显然是你使用的方式。但是,由于len('id="__VIEWSTATE" value="')是一个固定长度的字符串,因此你可以将其替换为它的值。 - Casimir et Hippolyte
1个回答

4
使用css选择器与lxml:
import lxml.html

root = lxml.html.fromstring(html)
matched = root.cssselect('#__VIEWSTATE')
if matched:
    value = matched[0].get('value')

使用BeautifulSoup
from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
matched = soup.select('#__VIEWSTATE')
if matched:
    value = matched[0].get('value')

'#' 是必要的吗? - 735Tesla
2
@735Tesla,是的,这是必要的。#__VIEWSTATE是CSS选择器(相当于*[id="__VIEWSTATE"])。 - falsetru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接