スクレイピングを学習する上で役立つ小ネタを紹介したいと思います。
例えば👇のようなURLがあったとして、
https://umekobucha.tasty.com/rice/tea_list/?page_id=101000/102500
後ろの方に101000という数字がありますよね。これをこのサイトURLのId番号だとしましょう。
複数のページでスクレイピングをするときにこのid番号を使いまわせばアクセス数を減らしサイトへの負担を減らすことができます。
今回はこの特定部位の文字を切り取る方法を紹介したいと思います。
使用するメソッドはreplace()とrfind()、スライスを使います。
まずはURLを定義しましょう
url = 'https://umekobucha.tasty.com/rice/tea_list/?page_id=101000/102500'
そしてさらにreplace()を使っていらない部分を空白に置き換えます。
最初のhttpからpage_id=までが不要ですね。
cut_url = url.replace('https://umekobucha.tasty.com/rice/tea_list/?page_id=', '' )
これでcut_urlの中身は101000/102500だけになりました。
ここまでできたらあとはrfind()でスラッシュの部分を特定しましょう。
list_index = cut_url.rfind('/')
rfind()とはfind()の逆バージョンですね。これは指定した文字列のインデックスを見つけてくるメソッドです。この場合スラッシュのインデックスは6番目になると思います。
この6番目をlist_indexに入れてスライスで切り取りましょう。
cut_url[:list_index]
ここでは101000/102500が入ってるcut_urlに対して6番目のスラッシュでスライスしてあげます。
print(cut_url[:list_index])
結果を見てみましょう。101000になってると思います。
この抜き取った番号で負荷をかけることなくリンクに飛べますね。
f'https://genmaicha.tasty.com/rice/greentea/?page_id={cut_url}/102500'
あとはf文字列を使ってformatと波括弧で応用します。
ドット○ンストールで勉強してた頃find()とかスライスっていつ使うんだよ、って思ってましたがこういう時に活用するんですね。
メソッドは知ってても使いこなす応用力と発想力が必要だなと思いました。