天天看點

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