【Pythonプログラミング】配列を使ったテキスト操作 URLの作成
ここではスクレイピングやwebAPIを利用する際にリクエスト先のURLを変数的に扱う方法についてご紹介したいと思います。
URL全体をそのまま配列として使う方法
例えば下記の様なURLがある場合、
"https://yomou.syosetu.com/rank/genrelist/type/daily_101/"
"https://yomou.syosetu.com/rank/genrelist/type/daily_102/"
"https://yomou.syosetu.com/rank/genrelist/type/daily_201/"
"https://yomou.syosetu.com/rank/genrelist/type/daily_202/"
"https://yomou.syosetu.com/rank/genrelist/type/daily_301/"
一番簡単な方法はURLを一つの配列に入れてしまって、呼び出す方法です。
この様に。
url_list=[ "https://yomou.syosetu.com/rank/genrelist/type/daily_101/", "https://yomou.syosetu.com/rank/genrelist/type/daily_102/", "https://yomou.syosetu.com/rank/genrelist/type/daily_201/", "https://yomou.syosetu.com/rank/genrelist/type/daily_202/", "https://yomou.syosetu.com/rank/genrelist/type/daily_301/"] print(url_list[2]) #https://yomou.syosetu.com/rank/genrelist/type/daily_201/
という感じに必要なものを指定して取り出すことができます。
URLの一部を変数として扱う方法
しかしこのURLすべてをリストに入れてしまう方法では、数が多くなると管理が大変になります。
そこで、共通する部分と変わっている部分を別なものとして考え、あとでくっつけるという方法がとられます。
この例のURLの場合、
の部分はすべて共通しており、変わっているのは「101」「102」……と言った数字だけなのです。
replaceを使う方法
replaceを使うことで元URLの一部を書き換えるという方法が可能となります。
url_number=["101","102","201","202","301"] pre_url="https://yomou.syosetu.com/rank/genrelist/type/daily_number/" url=pre_url.replace('number',url_number[2]) print(url) #https://yomou.syosetu.com/rank/genrelist/type/daily_201/
%sを使う方法
また「%s」を使う方法もあります。
どちらかというと、こっちの方がスッキリとしているかもしれません。
url_number=["101","102","201","202","301"] url="https://yomou.syosetu.com/rank/genrelist/type/daily_%s/" %url_number[2] print(url) #https://yomou.syosetu.com/rank/genrelist/type/daily_201/
for文でURLを一つずつ処理していく方法
リストを使ったURL生成の利点としてfor文で一つずつ処理することがしやすいという点が挙げられます。
例えば
url_number=["101","102","201","202","301"] for number in url_number: url="https://yomou.syosetu.com/rank/genrelist/type/daily_%s/" %number print(url) #https://yomou.syosetu.com/rank/genrelist/type/daily_101/ #https://yomou.syosetu.com/rank/genrelist/type/daily_102/ #https://yomou.syosetu.com/rank/genrelist/type/daily_201/ #https://yomou.syosetu.com/rank/genrelist/type/daily_202/ #https://yomou.syosetu.com/rank/genrelist/type/daily_301/
この様にすることが出来ます。
url_number=["101","102","201","202","301"] for number in url_number: url="https://yomou.syosetu.com/rank/genrelist/type/daily_%s/" %number print(number) print(url) #101 #https://yomou.syosetu.com/rank/genrelist/type/daily_101/ #102 #https://yomou.syosetu.com/rank/genrelist/type/daily_102/ #201 #https://yomou.syosetu.com/rank/genrelist/type/daily_201/ #202 #https://yomou.syosetu.com/rank/genrelist/type/daily_202/ #301 #https://yomou.syosetu.com/rank/genrelist/type/daily_301/
しかもこのやり方だと配列の中身を別のことにも使えるので便利です。