<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>Perl使いのPythonちゃん</title>
        <link>http://python.blog-slime.com/</link>
        <description>Perlでガチガチの思考をPythonに置換するスクリプトブログ</description>
        <language>ja</language>
        <copyright>Copyright 2009</copyright>
        <lastBuildDate>Wed, 03 Dec 2008 03:25:01 +0900</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>Python質問箱 - 投票はこちら</title>
            <description><![CDATA[なんか、鯖移転後にめんどくさくなって、<div>久々にページ見たら全然レイアウト崩れっぱなしだし、<br />放置してる間に<a href="http://python.blog-slime.com/2007/07/beautifulsouphtml.html">BeautifulSoup</a>の解説で飛んでくる人が増加してるし。<div>いやらしく広告とか貼っといた。</div><div><br /></div><div>さて、Python使い始めて1年くらいになるけど、ほとんどPerlの使い方忘れてますｗ</div><div>ただこのタイトルはお気に入りなんで、このままにしよう。</div><div>近況は特に変化もなく、飽きずにPythonで遊んでます。</div><div>ひとまず、やりたい事は何とか出来るところまでは来たので</div><div>また隙を見て、いろいろ紹介していきます。</div><div><br /></div><div>また、Pythonで行き詰りそうな所の解説とかやってみようと思います。</div><div>Python初心者の方とか、分からないことあったらコメント欄で適当に質問してみてください。</div><div>僕の方が初心者である可能性が大ですが、分からないなりに</div><div>一生懸命 調べて解説したいと思ってます。</div></div>]]></description>
            <link>http://python.blog-slime.com/2008/12/python.html</link>
            <guid>http://python.blog-slime.com/2008/12/python.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Python質問箱</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">初心者</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">質問</category>
            
            <pubDate>Wed, 03 Dec 2008 03:25:01 +0900</pubDate>
        </item>
        
        <item>
            <title>ppkd(ppkf)を使って、文字エンコードを自動判別(文字エンコードについて)</title>
            <description><![CDATA[<p>スクリプトを書く上で、日本語の扱いが最初のネックになる。</p>

<p>pythonは、基本UTF-8で書く事を推奨する。<br />
その場合にやらなければいけない設定は、過去にも取り上げた事がある。<br />
【<a href="http://python.blog-slime.com/2007/08/utf8.html">内部エンコーディングに使われるエンコードをUTF-8に設定...</a>】</p>

<p>流れ的には、UTF-8でスクリプトを書き<br />
出力する際に、WindowsならSJISへと変換するという形を取る。</p>

<p>Cygwinについては良く知らないが、<br />
端末が対応した形式に変換して出力する癖を付けるのがベスト。<br />
UTF-8が出力できるのなら、そのままunicodeで出力すれば、可能なはず。</p>

<div class="source"><pre>
print unicode(str)
# もしくは
print u"%s" % str
</pre></div>]]></description>
            <link>http://python.blog-slime.com/2007/10/ppkdppkf.html</link>
            <guid>http://python.blog-slime.com/2007/10/ppkdppkf.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">便利ツール</category>
            
            
            <pubDate>Fri, 26 Oct 2007 13:17:32 +0900</pubDate>
        </item>
        
        <item>
            <title>JTG - ipod・iTunes等、mp3プレイヤー用ジャケット画像簡単取得ツール</title>
            <description><![CDATA[<h2>Jack The Getter</h2>
CDジャケット写真の画像簡単取得ツール

<p>GUIの練習も兼ね、お気に入りのCDの<br />
ジャケ写を取得してくるツールを作ってみました。<br />
見た目も使いやすさも作者の性格まる出しですが<br />
音楽が好きな人は使ってみてください。</p>

<p>ちなみに、起動時のアイテムチョイスは、作者の趣味です。</p>]]></description>
            <link>http://python.blog-slime.com/2007/08/jtg-ipoditunesmp3.html</link>
            <guid>http://python.blog-slime.com/2007/08/jtg-ipoditunesmp3.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">便利ツール</category>
            
            
            <pubDate>Sat, 25 Aug 2007 12:10:09 +0900</pubDate>
        </item>
        
        <item>
            <title>PythonでGoogleの表示順位を取得</title>
            <description><![CDATA[<p>単純なものとして、BeautifulSoupを使ったHTML解析で<br />
Googleの表示順位を取得するスクリプトを作ってみた。</p>

<p>んだから、もちろんBeautifulSoupと初期設定は必須。<br />
そして、もちろんノンオブジェクト指向。</p>

<p>設定で指定した検索クエリ(q)を使用し、<br />
Googleで検索結果を取得。<br />
その中からURL(s)を発見したら表示するというもの。</p>]]></description>
            <link>http://python.blog-slime.com/2007/08/pythongoogle.html</link>
            <guid>http://python.blog-slime.com/2007/08/pythongoogle.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">BeautifulSoup</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTML解析</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTTPクライアント</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">htmllib</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">re</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">str</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">urllib</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">urllib2</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">サンプル集</category>
            
            
            <pubDate>Thu, 02 Aug 2007 18:53:00 +0900</pubDate>
        </item>
        
        <item>
            <title>内部エンコーディングに使われるエンコードをUTF-8に設定する方法。</title>
            <description><![CDATA[<p>環境により違いがあるようだが、Pythonをインストールした<br />
初期設定のままだと、'ascii'などが内部エンコーディングに使用されるようだ。</p>

<p>これにより、日本語の扱いで</p>

<div class="source"><pre>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinalnot in range(128)
</pre></div>

<p>などとエラーを吐く場合も多々あるので<br />
以下の箇所の設定を変更する必要がある。</p>]]></description>
            <link>http://python.blog-slime.com/2007/08/utf8.html</link>
            <guid>http://python.blog-slime.com/2007/08/utf8.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">BeautifulSoup</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Perl to Python</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Pythonインストール・初期設定</category>
            
            
            <pubDate>Thu, 02 Aug 2007 17:58:43 +0900</pubDate>
        </item>
        
        <item>
            <title>Perlで言う、join関数が使い難い。</title>
            <description><![CDATA[<p>Perlでは、連結文字が「.」で、数値の<del>乗算</del>加算には「+」を用いるのに対し<br />
Pythonでは、両方に「+」を用いることになる。<br />
これにより、数値を連結しようとすると<br />
必然的に、二つの数値の<del>積</del>和になってしまう訳だ。</p>

<div class="source"><pre>
>>> a = 1
>>> b = 2
>>> a + b
3
>>> # "ab"にはならない
</pre></div>

<p>これを回避するには、str()を使う。</p>

<div class="source"><pre>
>>> str(a)
"1"
</pre></div>

<p>str()は、数値も文字列にも使用でき<br />
どちらに対しても、文字列という型に変換することができる。</p>

<p>例えば、以下の例でエラーメッセージに出くわす人も<br />
多いのではないだろうか（筆者もその一人）</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/perljoin.html</link>
            <guid>http://python.blog-slime.com/2007/07/perljoin.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Perl to Python</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">join</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">str</category>
            
            
            <pubDate>Sat, 28 Jul 2007 12:14:42 +0900</pubDate>
        </item>
        
        <item>
            <title>BeautifulSoupでHTML解析</title>
            <description><![CDATA[<p><a href="http://www.crummy.com/software/BeautifulSoup/" target="_blank" title="BeautifulSoup">BeautifulSoup</a>が素晴らしいので<br />
他にあまり解説サイトもないし、<br />
簡単に使えそうなものを羅列してみた。</p>

<p>ただし<a href="http://python.blog-slime.com/2007/08/utf8.html" title="内部エンコーディングに使われるエンコードをUTF-8に設定する方法">デフォルトエンコーディングを設定</a>している事が前提。</p>

<p>BeautifulSoupに渡されたHTMLは、<br />
utf-8に文字コードを変換され<strike>自動で綺麗に生成しなおされる。</strike><br />
prettify()を使用すると、綺麗なソースに生成しなおされる。<br />
※BeautifulSoup内で処理される場合は、このソースが元になる。</p>

<p>壊れたタグを修復という訳ではなさそうだが<br />
改行やインデントを作り直してくれる。<br />
Webアプリケーションとしても、かなり使えそう。</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/beautifulsouphtml.html</link>
            <guid>http://python.blog-slime.com/2007/07/beautifulsouphtml.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">BeautifulSoup</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTML解析</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTTPクライアント</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">re</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">urllib</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">urllib2</category>
            
            
            <pubDate>Fri, 27 Jul 2007 14:00:38 +0900</pubDate>
        </item>
        
        <item>
            <title>PythonでHTML解析(HTMLParserより優れたパーサ)</title>
            <description><![CDATA[<p>HTTPクライアントを作成するにあたり、<br />
HTML解析周りが一番の難点となるのだが、<br />
Pythonの標準ライブラリ(htmllib, HTMLParserなど)では、<br />
壊れたHTMLを解析できないということなので<br />
<a href="http://www.crummy.com/software/BeautifulSoup/" target="_blank" title="BeautifulSoup">BeautifulSoup</a>を試してみることに。</p>

<p>使ってみてぶっくり。いや、びっくり。<br />
Perl厨には今までにない使い心地のパーサである。<br />
しかも文字エンコーディングまで自動で取得してくれる。</p>

<p>インストールも超簡単なので是非使ってみるべきだ。</p>

<p>インストール方法<br />
<a href="http://www.crummy.com/software/BeautifulSoup/" target="_blank" title="BeautifulSoup">BeautifulSoup</a>をダウンロード。<br />
スクリプトのあるディレクトリ、もしくは<br />
「Pythonのルートディレクトリ/Lib」に保存するだけ。</p>

<p>さて、本格的な使い方を追求してみようと思う。</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/pythonhtmlhtmlparser.html</link>
            <guid>http://python.blog-slime.com/2007/07/pythonhtmlhtmlparser.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">BeautifulSoup</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTMLParser</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTML解析</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTTPクライアント</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">htmllib</category>
            
            
            <pubDate>Fri, 27 Jul 2007 11:04:34 +0900</pubDate>
        </item>
        
        <item>
            <title>【対話型 Python】なあ、俺って結構イケてる？</title>
            <description><![CDATA[<p>関係ないけど、おもしろかったから覚書。</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/-python.html</link>
            <guid>http://python.blog-slime.com/2007/07/-python.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">雑記</category>
            
            
            <pubDate>Thu, 26 Jul 2007 20:03:48 +0900</pubDate>
        </item>
        
        <item>
            <title>cookielibでCookieが保持できずログインできない</title>
            <description><![CDATA[<p>urllib2, cookielibを使用し、某管理画面にログインするが<br />
セッションが保持できず、格闘すること数日。。。<br />
苦戦した末、やっと行き着いた答えは<br />
ヘッダが足りなかった事。。。。</p>

<p>keep-aliveという、セッションを保持させる感じの<br />
ブラウザの機能らしいのだが、urllib2には現状では搭載されておらず<br />
Connection: keep-alive<br />
というヘッダは吐き出さない。</p>

<p>んで、付記するように<br />
add_headerやaddheadersなど試みるが、<br />
これはUAしか変更できないのか効果なし。</p>

<p>結局httplibを使用して、無理やりヘッダを作ってあげるしか思いつかなかった。<br />
目的のページへは、ヘッダを吐き出すだけで、簡単にログインに成功した。</p>

<p>Keep-Aliveを保持するには、HTTPConnectionをCloseせずに<br />
そのまま次のリクエストを送信するだけでいい。<br />
ただし、リクエストした後には、<br />
必ずread()を実行しなければエラーを吐く。</p>

<p>まぁ、普通ではあまりない仕様だと思うが<br />
cookielibが、うまく挙動しない場合は<br />
ブラウザが吐き出すリクエストヘッダと同じように<br />
変更してみるのも良いだろう。</p>

<p>以下が、そのスクリプト。</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/cookielibcookie.html</link>
            <guid>http://python.blog-slime.com/2007/07/cookielibcookie.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTTPクライアント</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">httplib</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">re</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">urllib</category>
            
            
            <pubDate>Thu, 26 Jul 2007 10:31:32 +0900</pubDate>
        </item>
        
        <item>
            <title>PythonでHTTPクライアント(Cookie保持)</title>
            <description><![CDATA[<p>cookielibというモジュールを使うと良いらしいが<br />
同梱されるのは、python2.4からだそうだ。<br />
<a href="http://www.python.jp/Zope/download/pythoncore" target="_blank">日本Pythonユーザ会</a>から最新版をダウンロードし、アップデートしてみた。<br />
いちいちパスを通しなおすのが面倒なので<br />
インストール先はC:\Python</p>

<p>現時点では、日本語環境対応版が無いようだ。と思ったが<br />
2.4以降くらいから標準で日本語にも対応しているらしい。</p>

<p>ちなみにリダイレクト(Location:)は、勝手にやってしまうみたいなので注意。</p>

<p>やり方的には、次の通りで一応できた。</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/pythonhttpcookie.html</link>
            <guid>http://python.blog-slime.com/2007/07/pythonhttpcookie.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTTPクライアント</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">cookielib</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">urllib</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">urllib2</category>
            
            
            <pubDate>Wed, 25 Jul 2007 18:49:54 +0900</pubDate>
        </item>
        
        <item>
            <title>cookieの利用</title>
            <description><![CDATA[<p>PerlのHTTP::Cookiesのような便利なモジュールはないものか。</p>

<p>ログイン情報をPOSTで送信することできても<br />
その情報をクッキーに保持することができない。</p>

<p>未だ探索中。</p>

<p>見つかれば、時節で取り上げる。</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/cookie.html</link>
            <guid>http://python.blog-slime.com/2007/07/cookie.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTTPクライアント</category>
            
            
            <pubDate>Sun, 22 Jul 2007 15:25:32 +0900</pubDate>
        </item>
        
        <item>
            <title>urllibを使ってPOST送信</title>
            <description><![CDATA[<p>POSTする事自体は結構簡単っぽい。</p>

<p>urllibをimportしてエンコードしたパラメタを持ってリクエスト。</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/urllibpost.html</link>
            <guid>http://python.blog-slime.com/2007/07/urllibpost.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">HTTPクライアント</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">urllib</category>
            
            
            <pubDate>Sun, 22 Jul 2007 13:36:12 +0900</pubDate>
        </item>
        
        <item>
            <title>PerlからPythonに移行</title>
            <description><![CDATA[<p>perlを使って、いろいろやったけど<br />
結局スレッド関係で行き詰まり、何故かRubyではなく<br />
Pythonへ移行するつもり。</p>

<p>とりあえずは、POST操作ができるまで試み中。</p>]]></description>
            <link>http://python.blog-slime.com/2007/07/perlpython.html</link>
            <guid>http://python.blog-slime.com/2007/07/perlpython.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">雑記</category>
            
            
            <pubDate>Sun, 22 Jul 2007 13:27:47 +0900</pubDate>
        </item>
        
    </channel>
</rss>

