Python HTMLParser 解析网页实例详解

月亮慢半拍
月亮慢半拍
发布时间:2026-10-10 | 2人浏览过
原创

本文详解如何使用 Python 内置的 HTMLParser 模块解析网页 HTML 内容。通过继承 HTMLParser 类并重写 handle_starttag、handle_endtag 和 handle_data 方法,可以精准提取特定标签(如 title)的属性值及文本内容。文章提供了完整的代码示例,展示了从解析器初始化到数据提取的全过程,帮助开发者掌握这种基础的 HTML 解析方式。

Python 网页解析 HTMLParser 的实例详解

在使用 Python 抓取网页后,通常需要对获取的 HTML 内容进行解析以提取目标信息。Python 标准库提供了 HTMLParser 类作为解析模块,虽然其语法不如 XPath 简洁,但它是 Python 中最基础的 HTML 解析方式。对于简单的提取任务,直接继承该类并重写内部方法即可满足需求。

HTMLParser 解析原理

要实现自定义的 HTML 解析逻辑,核心在于继承 html.parser.HTMLParser 类,并重写以下三个关键方法:

  • handle_starttag(tag, attrs):当解析器遇到开始标签时触发。可以通过检查 tag 名称和 attrs 属性列表来识别目标标签及其属性。
  • handle_endtag(tag):当解析器遇到结束标签时触发。用于标记当前标签解析的结束。
  • handle_data(data):当解析器遇到标签内的文本数据时触发。用于提取具体的内容。

通过在这些方法中设置状态标志(如布尔变量),可以精确控制何时提取特定标签的属性值或文本内容。

代码实现示例

以下示例演示如何提取 <title> 标签的属性值(如 id 和 mouse)及其内部文本。假设待解析的 HTML 结构如下:

<html> <title id='main' mouse='你好'>我是标题</title><body>我是内容</body>  </html> 

对应的 Python 解析代码如下:

import html.parser as h 
 
 
 
class MyHTMLParser(h.HTMLParser): 
  a_t=False 
  def handle_starttag(self, tag, attrs): 
    #print("开始一个标签:",tag) 
    print() 
    if str(tag).startswith("title"): 
      print(tag) 
      self.a_t=True 
      for attr in attrs: 
        print("  属性值:",attr) 
 
  def handle_endtag(self, tag): 
    if tag == "title": 
      self.a_t=False 
      #print("结束一个标签:",tag) 
 
  def handle_data(self, data): 
    if self.a_t is True: 
      print("得到的数据: ",data) 
 
 
 
p=MyHTMLParser() 
 
p.feed("<html> <title id='main' mouse='你好'>我是标题</title><body>我是内容</body>  </html>") 
 
p.close()

运行结果

执行上述代码后,控制台将输出解析到的标签名、属性列表以及标签内的文本数据:

title 
  属性值: ('id', 'main') 
  属性值: ('mouse', '你好') 
得到的数据: 我是标题 

通过这种方式,开发者可以灵活地处理各种 HTML 结构。需要注意的是,虽然 HTMLParser 简单易用,但对于复杂的网页解析任务,建议使用支持 XPath 的组件(如 Scrapy),其语法更为简洁清爽。

以上就是 Python 网页解析 HTMLParser 的实例详解的详细内容,更多关于 Python 网页解析 HTML 的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表