🐹

PythonでHTMLからURLを抜き出す

2023/05/02に公開

HTMLコードからURLだけ抜き出したい

URLだけ抜き出したい時には正規表現を使いました。

URLの形を把握する

URLの形は、主に以下のようなものが多い。
・http://....
・https://...

別の形式が決まっていればそちらも検討する。

使用した正規表現

url_pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"

解説

http --> httpがある(から始まる)
s? --> sは0回か1回繰り返す
:// --> ://がある
[] --> 次の文字集合
\w --> 任意の半角英数字か_アンダースコア
/:%#$&?()~.=+- --> \はエスケープ。/:%#$&?()~.=+-が含まれるということ
+ --> 直前(今回は[])を1回以上繰り返す

ざっくりコード

HTMLコードが1列に入ったデータを想定。

import pandas as pd
    df = pd.read_csv('test.csv')
    df['URL'] = '' # 抜き出したURLを入れる列を作成しておく
    
    # 行数分ループする
    for i in range(df.shape[0]):

        pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
        text = df.iloc[i,2]

        url_list = re.findall(pattern, text)
        df.iloc[i,3] = ', '.join(url_list) # 先ほど作成した「URL」列にカンマ区切りで格納     

    df = df.drop(['html_code'], axis=1) # コードの表示が要らない場合削除
    df.to_csv('result.csv')

参考サイト

https://www.megasoft.co.jp/mifes/seiki/s310.html

https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3

Discussion