从下面一段HTML语句中提取出所有赛题和发布时间 <li> <a href="/plus/view.php?aid=356">航班座位自动分配系统</a> <span>2019-03-27</span> <div class="clear"></div> </li> <li> <a href="/plus/view.php?aid=346">车牌识别软件的设计与开发</a> <span>2019-03-05</span> <div class="clear"></div> </li>
时间: 2023-07-09 14:25:18 浏览: 195
好的,我可以使用 Python 中的 re 模块来实现这个功能。下面是代码示例:
```python
import re
html = '<li> <a href="/plus/view.php?aid=356">航班座位自动分配系统</a> <span>2019-03-27</span> <div class="clear"></div> </li> <li> <a href="/plus/view.php?aid=346">车牌识别软件的设计与开发</a> <span>2019-03-05</span> <div class="clear"></div> </li>'
pattern = r'<li>\s*<a\s+href="[^"]*"\s*>\s*([^<]*)\s*</a>\s*<span>\s*([^<]*)\s*</span>\s*<div\s+class="clear"></div>\s*</li>'
matches = re.findall(pattern, html)
if matches:
for match in matches:
print("赛题:", match[0])
print("发布时间:", match[1])
print()
else:
print("未能匹配到赛题和发布时间信息")
```
输出结果为:
```
赛题: 航班座位自动分配系统
发布时间: 2019-03-27
赛题: 车牌识别软件的设计与开发
发布时间: 2019-03-05
```
解释一下代码:首先定义了一个字符串 `html`,里面包含了一些 HTML 代码,其中我们要提取出所有赛题和发布时间。然后使用正则表达式 `r'<li>\s*<a\s+href="[^"]*"\s*>\s*([^<]*)\s*</a>\s*<span>\s*([^<]*)\s*</span>\s*<div\s+class="clear"></div>\s*</li>'` 定义了一个模式,意思是匹配以 "<li>" 开头,后面跟着一些空白字符,然后是一个 "<a>" 标签,接着是一些空白字符,然后是赛题名称,再然后是一些空白字符,然后是 "</a>" 标签,接着是一些空白字符,然后是一个 "<span>" 标签,接着是一些空白字符,然后是发布时间,再然后是一些空白字符,然后是 "</span>" 标签,接着是一个 "<div>" 标签和一些空白字符,最后是 "</li>" 标签。使用 `re.findall` 函数在 `html` 中搜索这个模式,返回所有匹配项的元组列表。如果找到了匹配项,则 `matches` 对象不为空;否则,输出"未能匹配到赛题和发布时间信息"。最后,遍历 `matches` 列表,使用索引操作获取每个元组的第一个和第二个元素,也就是赛题名称和发布时间,分别输出它们的值。
阅读全文