使用Python和正则表达式在HTML中查找表单

2024-10-03 17:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码来检查电子邮件正文中是否有公式内容,但我不明白这个字符串'<\s?\/?\s?form\s?>'是什么意思,以及是否有其他方法来检查电子邮件中是否存在公式内容

这是我写的代码:

class HTMLFormFinder(FeatureFinder):
    def getFeature(self, message):
        import re
        super(HTMLFormFinder, self).getFeature(message)
        payload = utils.getpayload(message).lower()
        return re.compile(r'<\s?\/?\s?form\s?>', re.IGNORECASE).search(payload)!= None

提前谢谢


Tags: 方法字符串代码selfreform内容message
2条回答

这就是所谓的正则表达式。这是一种匹配遵循特定模式的字符串的方法

https://docs.python.org/3.7/library/re.html

这里r'<\s?\/?\s?form\s?>'描述了一个<form>HTML标记,在HTML错误/格式错误的情况下有几个回退,特别是它处理可能出现在标记名form旁边的空白

检查表单是否存在的更好方法是使用XML/HTML解析器,如ElementTree、BeautifulSoup,因为它们比正则表达式更好地处理坏的/不正确的HTML。但是如果你想保持简单,你的正则表达式就足够了

使用BeautifulSoup,您可以执行以下操作:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html)
has_form = len(soup.find('form')) > 0

您可以在此处阅读有关正则表达式的更多信息: https://docs.python.org/2/library/re.html

特别是\s匹配任何空格字符

相关问题 更多 >