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

时间:2019-07-15 15:44:00

标签: python regex forms

我有以下代码检查电子邮件正文中是否存在公式化内容,但我不理解此字符串'<\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

谢谢。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

特别是\s与任何空白字符匹配。

相关问题