過去8回分の記事の内容でウェブサイトからデータを入手するプログラムを書くことはできます。
しかし、困ったことがありました。
データをファイルに書き込みしたときの問題点
ウェブサイトから(1)郵便番号・(2)住所・(3)名称を取得したとします。
それらをファイルに書き込むと、
XXX-XXXX
〇〇県××市●●町1-2-3
△△総合病院
XXX-XXXX
●●県〇〇市■■区××11-1
〇〇クリニック
となります。
データを取得すると、もれなく末尾に改行がついてきます。(@@
しかし、上記の形式だと面倒です。
できれば↓こんな感じがよいです。
XXX-XXXX 〇〇県××市●●町1-2-3 △△総合病院
XXX-XXXX ●●県〇〇市■■区××11-1 〇〇クリニック
そこで改行をタブに置き換えすることにしました。
ExcelやVBAでもそういう関数はあるので、Pythonでも同じような機能はあるやろと思ったらありましたよ。(^^)v
Pythonではreplceメソッドを使います。
変数.replace(置き換え前の文字列, 置き換え後の文字列)の形式で実現できます。replaceメソッドの引数も分かりやすいですね。置き換え前と後を置くだけでOKですから。
moji_mae = "りんご\nみかん" moji_ato = moji_mae.replace("\n","\t") print(moji_mae) # りんご(改行)みかんと表示 print(moji_ato) # りんご(タブ)みかんと表示
replaceメソッドのおかげで、改行問題はクリアできました。
スクレイピングをするさいのマナー
このプログラムを作るさいにいちばん参考にした「Python2年生スクレイピングのしくみ」にありました。
ひたすらアクセスすることでウェブサーバに迷惑をかけないようにすることが必要です、とのことです。
そこで1件分データを取得したら、次のデータを取得するまでにプログラムを一時停止します。
これを実現するためにtimeモジュールのsleep関数を使います。
import time # timeモジュールをインポート #処理 time.sleep(3)
sleep関数の引数は一時停止する時間を秒単位で指定します。3秒間一時停止する場合「3」と入力します。
これだけで実現できてしまいます。Pythonは初心者にも分かりやすい言語ですね。
コメント