为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕侠2389804 2021-12-08 16:29:31
我有一个包含多个html tags这种形式的字符串:string= '<input type="hidden" name="csrf" value="7629b234d1cc2f2a5383f5e6d7dc6bd2">'我想提取"value",我会用 a 来做.split,但我不确定这是否是最好的方法。所需的输出:7629b234d1cc2f2a5383f5e6d7dc6bd2任何想法或更好的方法?
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

您可以使用 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">')



查看完整回答
反对 回复 2021-12-08
?
白衣非少年

TA贡献1155条经验 获得超0个赞

使用正则表达式


import re


match = re.compile(r'(value=\"(.*)\"\>)$').finditer(string)


for i in  match:

    print(i.group(2))

输出:


7629b234d1cc2f2a5383f5e6d7dc6bd2


查看完整回答
反对 回复 2021-12-08
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

你可以使用re.search:


import re

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

m = re.search('value="(.+)?"',string)[1]

print(m)

输出:


629b234d1cc2f2a5383f5e6d7dc6bd2


查看完整回答
反对 回复 2021-12-08
  • 3 回答
  • 0 关注
  • 442 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信