def ExtractViewState(string):
m = re.match("__viewstate[^>]+value=\"\(\?<Value>[^\"]*\)", string, re.IGNORECASE)
return m.group(0)
我想我错过了一些东西,但它一直没有回复。 Blagh。
更新:
<input type="hidden" name="__VIEWSTATE" value="5vzj+3s4pEHFJUQoOJbZicZdf+k2bi0uiXeIxMNTxjocu0FLzTXEI8pEcQy/V4r1vtIP6G/E0/j0C5TwvhaWdW1wJVGwGKfO26gvQk9O0zsxy5NBpx+PlfL5h7nlnAp+GmAIwdjLWxRFFbhxaOfH+yZQKfkzshBvE7xogxrTnrrlF22BiENHdWHuMqeGYb4AUfvbbJ2psQOwTTOF6meAjszLtaAxBVTgun4gVsGOKUDqasgzyYn7AsxsJ4rJ3S/64YU2sUwAsvCD1d0X3Q8bGiwriRU/pAo31xn4SfhP8dk22QbhFbVpvIwl3WGTxohL" />
应该只在value属性中返回文本:
“5vzj + 3s4pEHFJUQoOJbZicZdf + k2bi0uiXeIxMNTxjocu0FLzTXEI8pEcQy / V4r1vtIP6G / E0 / j0C5TwvhaWdW1wJVGwGKfO26gvQk9O0zsxy5NBpx + PlfL5h7nlnAp + GmAIwdjLWxRFFbhxaOfH + yZQKfkzshBvE7xogxrTnrrlF22BiENHdWHuMqeGYb4AUfvbbJ2psQOwTTOF6meAjszLtaAxBVTgun4gVsGOKUDqasgzyYn7AsxsJ4rJ3S / 64YU2sUwAsvCD1d0X3Q8bGiwriRU / pAo31xn4SfhP8dk22QbhFbVpvIwl3WGTxohL”
答案 0 :(得分:2)
你有几个问题:
import re
def ExtractViewState(string):
# re.match looks only at the **beginning** of the string
# dont escape the `( .. )` those capture the group
m = re.search("__viewstate[^>]+value=\"([^\"]*)", string, re.IGNORECASE)
# group(0) is the whole match, you want the 1st capture group
return m.group(1)
答案 1 :(得分:0)
三个问题。
您需要re.search
,而不是re.match
。
您需要(?P<...>)
,而不仅仅是(?<...>)
。
你有更多的反斜杠。
re.search("__viewstate[^>]+value=\"(?P<Value>[^\"]*)", s, re.IGNORECASE)
适合我。