【发布时间】:2021-07-11 16:02:39
【问题描述】:
我需要将任何类型的 html 代码(字符串)划分为令牌列表。 例如:
"<abc/><abc/>" #INPUT
["<abc/>", "<abc/>"] #OUTPUT
或
"<abc comfy><room /></abc> <br /> <abc/> " # INPUT
["<abc comfy><room /></abc>", "<br />", "<abc/>"] # OUTPUT
或
"""<meta charset="utf-8" /><title> test123 </title><meta name="test" content="index,follow" /><meta name="description" content="Description" /><link rel="stylesheet" href="../layout/css/default.css" />""" # INPUT
[
'<meta charset="utf-8" />',
"<title> test123 </title>",
'<meta name="test" content="index,follow" />',
'<meta name="description" content="Description123" />',
'<link rel="stylesheet" href="../xx/css/default.css" />',
] # OUTPUT
我想做什么:
def split(html: str) -> List[str]:
if html == "":
return []
delimiter = "/>"
split_name = html.split(" ", maxsplit=1)[0]
name = split_name[1:]
delimited_list = [character + delimiter for character in html.split(delimiter) if character]
rest = html.split(" ", maxsplit=1)[1]
char_delim = html.find("</")
### Help
print(delimited_list)
return delimited_list
我的输出:
['<abc/>', '<abc/>']
['<abc comfy><room />', '</abc> <br />', ' <abc/>', ' />']
['<meta charset="utf-8" />', '<title> test123</title><meta name="test" content="index,follow" />', '<meta name="description" content="Description123" />', '<link rel="stylesheet" href="../xx/css/default.css" />']
所以我尝试在适用于第一种情况的“/>”处拆分。然后我尝试了几件事。试图识别“名称”,所以html字符串的第一个标识符如“abc”。
你们知道如何继续吗?
谢谢!
问候 尼克
【问题讨论】:
-
或许你可以试试lxml?
-
有图书馆。找到符合您需求的信誉良好的产品并使用它。那里有太多结构奇特的 HTML 文档;你不会让所有这些都是正确的。最好使用经过验证的代码。
标签: python html parsing web-crawler tokenize