【发布时间】:2020-06-03 21:47:01
【问题描述】:
我正在尝试使用 python 获取 html 文件中所有元素的元素和类名。我设法使用下面的代码获取所有类名。之所以这样写,是因为我会在存储带有类名的元素时浏览大量 html 文件。忽略没有类名的元素。
temp_file = open(root + "/" + file, "r", encoding="utf-8-sig", errors="ignore")
temp_content = temp_file.read()
class_names = re.findall("class=\"(.*?)\"", temp_content)
但是现在我正在努力寻找一种方法来获取该类所属的元素。请记住,元素有时会相互重叠,因此 readlines() 也无济于事,而且可能比一次正则表达式整个文档要慢。
<div class="header_container container_12">
<div class="grid_5">
<h1><a href="#">Logo Text Here</a></h1>
</div>
<div class="grid_7">
<div class="menu_items">
<a href="#" class="home active">Home</a><a href="#" class="portfolio">Portfolio</a>
<a href="#"
class="about">About Me
</a><a href="#" class="contact">Contact Me</a>
</div>
</div>
</div>
上面的 html sn-p 故意缩进严重,以展示我正在使用的数据类型...... 目标可能是将它们存储在哈希图中。 即
"header_Container container_12": "div"
"grid_5": "div"
"grid_7": "div"
"menu_items": "div"
"home active": "a"
"portfolio": "a"
"about": "a"
"contact": "a"
【问题讨论】:
-
你考虑过解析 DOM 吗?
-
Parsing HTML with regex is a hard job HTML 和正则表达式不是好朋友。使用解析器,它更简单、更快且更易于维护。