天天看点

Python练手小程序—用正则表达提取html中的url

在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的学习知识成果,自己去亲自实现。

来源:GitHub

Python练手小程序项目地址:https://github.com/Show-Me-the-Code/python

写作日期:2019.12.27

今天练习第0009题,题目如下:

Python练手小程序—用正则表达提取html中的url

先看一下HTML这个页面和源码吧

Python练手小程序—用正则表达提取html中的url

很简单,和上次提取HTML文件正文类似,这次还是用正则表达式提取URL,规则写的比较粗糙,主要提取href="url" target="_blank" rel="external nofollow" 中的,更多不符合条件的就没怎么提取,但也包含HTML文件的很多了!

下次准备专门针对Python的正则表达式写一篇文章,主要涉及一些用法,学会熟练运用!

Python代码如下:

import re
import codecs


def read_html(path):
    """
    读取html文件
    :param path:
    :return: 字符串类型
    """
    with codecs.open(path, 'r', encoding='utf-8') as f:
        html = f.read()
    return html


def parse_url(html):
    """
    抽取html中的链接URL
    :param html:
    :return:
    """
    # r'<a.*?href="https://.*?" target="_blank" rel="external nofollow" '
    pattern = re.compile(r'"(https://.*?|http://.*?)"')
    urls = re.findall(pattern, html)
    for url in urls:
        print(url)


if __name__ == '__main__':
    path = 'trigram.htm'
    html = read_html(path)
    parse_url(html)

           

看下结果展示:

Python练手小程序—用正则表达提取html中的url