一些正则表达式或者在python中提取html标签<input>的“值”的最佳方法是什么?

我有一个包含多个html tags这种形式的字符串:

string= '<input type="hidden" name="csrf" value="7629b234d1cc2f2a5383f5e6d7dc6bd2">'

我想提取"value",我会用 a 来做.split,但我不确定这是否是最好的方法。

所需的输出:

7629b234d1cc2f2a5383f5e6d7dc6bd2

任何想法或更好的方法?


慕侠2389804
浏览 443回答 3
3回答

胡说叔叔

您可以使用 html.parserfrom html.parser import HTMLParserclass ValueFinder(HTMLParser):&nbsp; &nbsp; def handle_starttag(self, tag, attrs):&nbsp; &nbsp; &nbsp; &nbsp; for attr in attrs:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if attr[0] == "value":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(attr[1])parser = ValueFinder()parser.feed('<input type="hidden" name="csrf" value="7629b234d1cc2f2a5383f5e6d7dc6bd2">')

白衣非少年

使用正则表达式import rematch = re.compile(r'(value=\"(.*)\"\>)$').finditer(string)for i in&nbsp; match:&nbsp; &nbsp; print(i.group(2))输出:7629b234d1cc2f2a5383f5e6d7dc6bd2

繁华开满天机

你可以使用re.search:import restring= '<input type="hidden" name="csrf" value="7629b234d1cc2f2a5383f5e6d7dc6bd2">'m = re.search('value="(.+)?"',string)[1]print(m)输出:629b234d1cc2f2a5383f5e6d7dc6bd2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python