任意の日付がその月の第何週かを求める python


スクレイピングでカレンダーをポチポチしたいとき。
自分はxpathを使います。
その時よくあるxpathのパターンが以下(日曜始まりのカレンダー)
//[@id="cal"]/main/table/tbody/tr[3]/td[1]・・・第3週目の1日目
//
[@id="cal"]/main/table/tbody/tr[3]/td[2]・・・第3週目の2日目
//*[@id="cal]/main//table/tbody/tr[3]/td[7]・・・第3週目の7日目

カレンダーがきれいなテーブルになっています。
tr[3]がカレンダーの第3週目を表しています
もし、2021年2月28日をポチっとしたい場合(日曜始まりの場合)
xpathは
//*[@id="cal"]/main/table/tbody/tr[5]/td[1]・・・第5週目の1日目

ここで必要になるのがtr[5]の部分つまり、
任意の日付がその月のカレンダーの第〇週になるということです。

ネットで調べても難しかったので自分で関数を作成しました。

任意の日付がカレンダーの第〇週かを求める
import datetime
def get_week(year,month,day):
  """ 
   日曜始まりのカレンダーの場合任意の日付が第〇週かを求める
    Args:
        year:年
        month:月
        day:日        
    Returns
        第〇週
    """
    firstday=datetime.date(year,month,1) #任意の日付の同月1日のdate型を作成する
    hizuke=datetime.date(year,month,day) #任意の日付のdate型を作成する

    firstsyuu=firstday.strftime("%U")   #任意の日付同月1日がその年の何週目かを取得する
    nowsyuu=hizuke.strftime("%U")         #任意の日付がその年の第何週目かを取得する

    return int(nowsyuu)-int(firstsyuu)+1  #引き算して求める

strftime("%U")で年初からの週数がわかるのでうまく引き算をして求めます。
※1/1は第0週
※カレンダーが月曜日から始まる場合strftime("%W")

strftimeの説明