通过正则表达式解析HTML入门指南

来源:互联网 发布:烟台网络广播 编辑:程序博客网 时间:2024/06/08 23:48

一个完整的HTML网页通常是由很多标签组成的,通过正则表达式我们可以筛选出我们想要的内容。一般我们利用正则表达式来获取标签中的内容或者属性值,获取到内容和属性值之后,我们还可以利用正则表达式进一步获取想要的内容。

python中使用正则表达式解析HTML的步骤:

  1. 首先需要引入re模块
  2. 根据所要获取的内容或者属性值定义一个正则表达式
  3. 利用re库提供的方法获取满足所定义的正则表达式的内容或属性值

下面是一个简单的demo,包含了内容的获取,以及属性值的获取:

# coding: utf-8# @author: huangwenrenimport redef getContent():    html = '''    <tr>        <th>性別:</th>        <td>男</td>    </tr>    '''    print(html)    # 正则表达式获取<tr></tr>之间内容      res_tr = r'<tr>(.*?)</tr>'    m_tr = re.findall(res_tr, html, re.S | re.M)    for line in m_tr:        print(line)        # 获取表格第一列th 属性          res_th = r'<th>(.*?)</th>'        m_th = re.findall(res_th, line, re.S | re.M)        for mm in m_th:            # 默认end='\n'            print(mm, end='')        # 获取表格第二列td 属性值          res_td = r'<td>(.*?)</td>'        m_td = re.findall(res_td, line, re.S | re.M)        for nn in m_td:            print(nn)def getAttribute():    html = '''    <td>         <a href="https://www.baidu.com/articles/zj.html" title="浙江省">浙江省主题介绍</a>         <a href="https://www.baidu.com//articles/gz.html" title="贵州省">贵州省主题介绍</a>     </td>     '''    # 获取链接属性方法1    print(re.findall(r'<a href="(.*?)".*?</a>', html))    # 获取链接属性方法2    # ?<= 之前 的字符串内容需要匹配表达式才能成功匹配    # ?=  之后 的字符串内容需要匹配表达式才能成功匹配    print(re.findall(r'(?<=href=\").+?(?=\")', html))if __name__ == '__main__':    getContent()    getAttribute()

点击可以查看更多关于python解析HTML表达式的用法
点击可以查看正则表达式的详细说明

原创粉丝点击