2012年9月8日

Python で URL 操作にしたい場合は furl を利用する

概要

Python 標準の urllib 等を利用した URL 操作は結構面倒。URL パラメータとかを生成する場合等は furl を利用するのが便利。

インストール

pip を利用する。

pip install furl

使い方

使い方は「furl/API.md」に全部書いてある。

サンプル

これだけだとつまらないので、ほんの一部の機能を使った簡単なサンプルをはっておく。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest

from furl import furl


class TestFurl(unittest.TestCase):

    def setUp(self):
        """
        気象庁 東京 2012年8月データを取得する URL をサンプルにする
        """
        self.url = furl(
            'http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?'
            'prec_no=44&'
            'block_no=47662&'
            'year=2012&'
            'month=8&'
            'day=&'
            'view=')

    def test_change_year(self):
        """
        年を変更してみる
        """
        #  年を変更する
        self.url.args['year'] = '2011'
        self.assertEquals(
            'http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?'
            'prec_no=44&'
            'block_no=47662&'
            'year=2011&'  # 年が変更された
            'month=8&'
            'day=&'
            'view=',
            self.url.url)

    def test_clear(self):
        """
        パラメータをクリアする
        """
        self.url.set({})
        self.assertEquals(
            'http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php',
            self.url.url)

if __name__ == '__main__':
    unittest.main()

課題

furl は現在 Python3 に対応してない。パッチは投稿されているみたいなので、対応をすこし待ってみる。
もし Python 3 に対応しないようなら、fork してでも使いたいライブラリです。

blog comments powered by Disqus