有时,我们需要验证源字符串中存在的 HTML 标签是否也存在于目标字符串中。例如,我们需要验证以下代码:
source = '<em>Hello</em><label>What's your name</label>'
verify_target(’<em>Hi</em><label>My name is Jim</label>')
True
verify_target('<label>My name is Jim</label><em>Hi</em>')
True
verify_target('<em>Hi<label>My name is Jim</label></em>')
False
BeautifulSoup 是一个流行的 Python 库,可以轻松地从 HTML 文档中提取数据。我们可以使用 BeautifulSoup 来获取源字符串和目标字符串中的所有 HTML 标签,然后比较这两个标签集合。
from BeautifulSoup import BeautifulSoup
def get_tags_set(source):
soup = BeautifulSoup(source)
all_tags = soup.findAll(True)
return set([tag.name for tag in all_tags])
def verify(tags_source_orig, tags_source_to_verify):
return tags_source_orig == set.intersection(tags_source_orig, tags_source_to_verify)
source= '<label>What\'s your name</label><label>What\'s your name</label><em>Hello</em>'
source_to_verify= '<em>Hello</em><label>What\'s your name</label><label>What\'s your name</label>'
print verify(get_tags_set(source),get_tags_set(source_to_verify))
正则表达式是一种强大而灵活的工具,可以用于匹配字符串中的模式。我们可以使用正则表达式来提取源字符串和目标字符串中的所有 HTML 标签,然后比较这两个标签集合。
import re
def get_tags_set(source):
tags = re.findall(r'<(.*?)>', source)
return set(tags)
def verify(tags_source_orig, tags_source_to_verify):
return tags_source_orig == set.intersection(tags_source_orig, tags_source_to_verify)
source= '<label>What\'s your name</label><label>What\'s your name</label><em>Hello</em>'
source_to_verify= '<em>Hello</em><label>What\'s your name</label><label>What\'s your name</label>'
print verify(get_tags_set(source),get_tags_set(source_to_verify))
HTMLParser 是 Python 标准库中的一个模块,可以用于解析 HTML 文档。我们可以使用 HTMLParser 来获取源字符串和目标字符串中的所有 HTML 标签,然后比较这两个标签集合。
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.tags = []
def handle_starttag(self, tag, attrs):
self.tags.append(tag)
def get_tags_set(source):
parser = MyHTMLParser()
parser.feed(source)
return set(parser.tags)
def verify(tags_source_orig, tags_source_to_verify):
return tags_source_orig == set.intersection(tags_source_orig, tags_source_to_verify)
source= '<label>What\'s your name</label><label>What\'s your name</label><em>Hello</em>'
source_to_verify= '<em>Hello</em><label>What\'s your name</label><label>What\'s your name</label>'
print verify(get_tags_set(source),get_tags_set(source_to_verify))
这三种方法都可以用来验证源字符串中存在的 HTML 标签是否也存在于目标字符串中。您可以根据自己的需要选择合适的方法。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。