我有一个字符串,其中包含几个html tags
与此形式:
string= '<input type="hidden" name="csrf" value="7629b234d1cc2f2a5383f5e6d7dc6bd2">'
我想提取"value"
,我会用.split
做,但我不确定它是否是最好的方式。
输出所需:
7629b234d1cc2f2a5383f5e6d7dc6bd2
任何想法或更好的方式?
你可以使用html.parser
from html.parser import HTMLParser
class ValueFinder(HTMLParser):
def handle_starttag(self, tag, attrs):
for attr in attrs:
if attr[0] == "value":
print(attr[1])
parser = ValueFinder()
parser.feed('<input type="hidden" name="csrf" value="7629b234d1cc2f2a5383f5e6d7dc6bd2">')
你可以使用re.search
:
import re
string= '<input type="hidden" name="csrf" value="7629b234d1cc2f2a5383f5e6d7dc6bd2">'
m = re.search('value="(.+)?"',string)[1]
print(m)
输出:
629b234d1cc2f2a5383f5e6d7dc6bd2
使用正则表达式
import re
match = re.compile(r'(value=\"(.*)\"\>)$').finditer(string)
for i in match:
print(i.group(2))
输出:
7629b234d1cc2f2a5383f5e6d7dc6bd2