feedparser,Yahoo翻訳APIなどいろいろ使えないって(ーー;)『10日でおぼえるPython入門教室』第4日 2限目メモ(1)


10日でおぼえるPython入門教室

第4日 2限目 Yahoo翻訳APIを使って翻訳してみよう

P120.feedparserモジュールのインストール

本のとおり、コマンドプロンプトを起動し、以下のように入力。

easy_install feedparser

エラー!!

‘easy_install’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。

つまり、easy_installが入っていないそうです。。。

なんか本に書いてあったような。。。と思い出し本をパラパラめくると、第0日 オリエンテーションのページ「xx」にありましたー!!
ということで、本のとおりにやればインストール完了です。

再度、feedparserモジュールのインストール

コマンドプロンプトを起動し、再度入力。

easy_install feedparser

インストール完了!

Pythonシェル(IDLEなど)で、インストールされているか確認しまーす。

import feedparser

エラー!!

ImportError: No module named feedparser

インストールできてない。。。
「feedparser-4.1-py2.5.egg」ってeggファイルはあるんですけど、どうしていいか分からない。。。
分からないんで、feedparserのページにいって、http://www.feedparser.org/、「feedparser-4.1.zip」をダウンロード→解凍→「feedparser-4.1」フォルダができたので、フォルダのなかをみたら「setup.py」があるので、コマンドプロンプトを起動し、

cd C:\Python25\Lib\site-packages\feedparser-4.1
python setup.py

エラー!!インストールできない。。。「feedparser-4.1」フォルダの「README」みたら、

To install:
$ python setup.py install

と、書いてあるので、コマンドプロンプトに入力!

cd C:\Python25\Lib\site-packages\feedparser-4.1
python setup.py install

インストール完了!

で、再びPythonシェル(IDLEなど)で、インストールされているか確認しまーす。

import feedparser

エラー出ないんで、ついにfeedparserインストール完了(^_^)v

Yahoo翻訳APIにURLをリクエスト

ブラウザーで、以下コードを入力すると「english」の日本語訳の「英語」がRSSで返ってくるはず。

http://pipes.yahoo.com/poolmmjp/ej_translation_api?_render=rss&text=english

「english」の日本語訳が表示されなぁーーーい。。。。。。
ブラウザーは普段Google Chrome使っているんですけど、FireFoxとかInternetExploreでやりましたけどダメですねぇ~使えませんねぇ~Yahoo翻訳API(ーー;)
なんで、また代替のサンプル考えます(^_^)v
ということで今日は寝ます。。。I(ーー;)

楽天ブックスで『10日でおぼえるPython入門教室』を買う


10日でおぼえるPython入門教室

『10日でおぼえるPython入門教室』第4日 1限目メモ


10日でおぼえるPython入門教室

第4日 1限目 日本語について再考しよう

デフォルトのエンコードを「utf-8」にしているからか??、デコードエラーになったりしてるところがあったんですけど、まぁ意味分ったらいいかってことで、スルーしました。
気が向いたらまたやってみます。

間違い

P112.文字コード変換の例のコードの1行目

codeing : utf-8

coding : utf-8

「e」がいりませんね。

楽天ブックスで『10日でおぼえるPython入門教室』を買う


10日でおぼえるPython入門教室

正誤表『10日でおぼえるPython入門教室』公式正誤表に載ってない正誤表


10日でおぼえるPython入門教室

公式『10日でおぼえるPython入門教室』正誤表

http://www.seshop.com/book/errata/default.asp?mode=detail&pid=10466&printno=1&pageno=all

正誤表『10日でおぼえるPython入門教室』公式正誤表に載ってない正誤表

3日までやっています。

公式『10日でおぼえるPython入門教室』正誤表に乗っていない正誤表をかってにつくっています。

2009/09/11現在、公式正誤表にあるもの

詳細は公式ページをご覧ください。

  • 【1刷/ P.006】一番下の囲み内
  • 【1刷/ P.023】2番目の囲み内、下から2行目
  • 【1刷/ P.042】一番下の囲み
  • 【1刷/ P.050】2つ目の囲み内、2行目

    第0日 オリエンテーション

    ix~xxviii

    間違いは見つかりませんでした。

    第1日 Pythonはじめの一歩

    P001~P030

  • 【1刷/ P.006】一番下の囲み内
  • 【1刷/ P.023】2番目の囲み内、下から2行目

詳細は公式ページをご覧ください。

第2日 Pythonを本格的に使ってみよう

P31~P52

  • 【1刷/ P.042】一番下の囲み
  • 【1刷/ P.050】2つ目の囲み内、2行目

詳細は公式ページをご覧ください。

P051.ヒントのところ

sys.path.append(c:\\pythond10d)

sys.path.append('c:\\pythond10d')

ヒントのモジュール検索パスを一時的に追加するに以下のコードがありますけど、クオテーションが必要です。

第3日 Web APIを使ってみよう

P053~P106

P054~P69.1時限目 Amazon APIを使って書籍情報を取得しよう

2009年8月にAmazonがAPIを仕様変更したため、第3日1時限目のサンプルは使えません。

Amazon APIを楽天ウェブサービスに置き換えた記事を書いていますので、よろしければ参考にしてください。>>楽天ウェブサービスを使って商品情報を取得しよう『10日でおぼえるPython入門教室』第3日 1限目メモ

P082.「動作ログを記録する関数」と「エラーログを記録する関数」のところのコードの1行目と6行目

1行目の誤

form datetime import datetime

1行目の正

from datetime import datetime

「form」→「from」。

6行目の誤

f.write(t + t ' : ' + now + \r\n')

6行目の正

f.write(t + ' : ' + now + \r\n')

「t + t 」→「t +」。「t」が1つ余分にある。

P084.main関数の改造の25行目

    try

    try:

「:」コロンがいります。

P085.main関数の改造の42,43行目

        except Exception, e:
            adding_error_log(url + ' ' + str(e))

    except Exception, e:
        adding_error_log(url + ' ' + str(e))

スペース4つ分削除してインデントを揃えるのと、str(e)の前に「+」がないので追加。

P101.main関数の分割のコードの016行目

xmlfile = urllib2.urlopen(url)

xmlfile = urllib.urlopen(url)

「2」がいりませんね。

楽天ブックスで『10日でおぼえるPython入門教室』を買う


10日でおぼえるPython入門教室

『10日でおぼえるPython入門教室』第3日 3限目メモ


10日でおぼえるPython入門教室

第3日 3限目 各地の天気予報を比べよう

知らなかったこと

printで末尾に「,」をつけると、スペース区切りで、一行で出力される

P092.のところで、なんで「,」があるんだろうって思ってたんですよね。そういうことだったのかー。。。

P097.の関数とメインの変数「weather」は名前は同じだけど違う

メモです。

ElementTreeのXPathの簡易表記便利すぎます!!

 weather['temperature'] = root.find(".//temperature/max/celsius").text

「.//」がルートで「/」が階層。
階層が深くなると条件分岐いっぱい書かないといけなくなるから超便利ですよ!!

間違い

P101.main関数の分割のコードの016行目

xmlfile = urllib2.urlopen(url)

xmlfile = urllib.urlopen(url)

「2」がいりませんね。

公式の『10日でおぼえる Python 入門教室 』正誤表に載っていない間違いが多いので、今度まとめまーす(^_^)v

楽天ブックスで『10日でおぼえるPython入門教室』を買う


10日でおぼえるPython入門教室

『10日でおぼえるPython入門教室』第3日 2限目メモ


10日でおぼえるPython入門教室

知らなかったこと

「1 + ’2′」はTypeErrorになる

JavaScriptだと「3」になるんですけどね。

間違い

P82.「動作ログを記録する関数」と「エラーログを記録する関数」のところのコードの1行目

form datetime import datetime

from datetime import datetime

「form」→「from」

P82.「動作ログを記録する関数」と「エラーログを記録する関数」のところのコードの6行目

f.write(t + t ' : ' + now + \r\n')

f.write(t + t ' : ' + now + \r\n')

「t + t 」→「t +」。「t」が1つ余分にある。

P84.main関数の改造の25行目

    try

    try:

「:」コロンがいりますね。

P85.main関数の改造の42,43行目

        except Exception, e:
            adding_error_log(url + ' ' + str(e))

    except Exception, e:
        adding_error_log(url + ' ' + str(e))

スペース4つ分削除してインデントを揃えるのと、str(e)の前に「+」がないので追加。

楽天ウェブサービスに接続するプログラムのログ処理を追加する

本ではAmazon APIですが、ユイが楽天に置き換えた版に、ログ処理を追加したコードは以下のようになります。

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

import urllib
from xml.etree.ElementTree import ElementTree
from datetime import datetime

def adding_log(t):
    f = open('log.txt', 'a')
    try:
        now = datetime.now().strftime('%Y%m%d %H:%M:%S')
        f.write(t + ' : ' + now + '\r\n')
    finally:
        f.close()

def adding_error_log(t):
    f = open('error_log.txt', 'a')
    try:
        now = datetime.now().strftime('%Y%m%d %H:%M:%S')
        f.write(t + ' : ' + now + '\r\n')
    finally:
        f.close()

def main(url):
    try:
        xmlfile = urllib.urlopen(url)
        try:
            adding_log(url)

            tree = ElementTree(file=xmlfile)
            root = tree.getroot()
            for node1 in root.getchildren():
                if node1.tag == "Body":
                    for node2 in node1.getchildren():
                        if node2.tag == "{http://api.rakuten.co.jp/rws/rest/ItemSearch/2009-04-15}ItemSearch":
                            for node3 in node2.getchildren():
                                if node3.tag == "hits":
                                    print node3.text
                                elif node3.tag == "Items":
                                    for node4 in node3.getchildren():
                                        if node4.tag == "Item":
                                            for node5 in node4.getchildren():
                                                if node5.tag == "itemName":
                                                    print node5.text

        finally:
            xmlfile.close()

    except Exception, e:
        adding_error_log(url + ' ' + str(e))

if __name__ == "__main__":
    rakuten_api_url = "http://api.rakuten.co.jp/rws/2.0/rest?"
    rakuten_developerId = "0123456789"
    Keywords = "VQ1015%20ENTRY"
    url = rakuten_api_url + "developerId=" + rakuten_developerId + "&operation=ItemSearch&version=2009-04-15&keyword=" + Keywords
    m = main(url)

※「rakuten_developerId = “0123456789″」の「”0123456789″」は取得したデベロッパーIDに置き換えてください。

公式の『10日でおぼえる Python 入門教室 』正誤表に載っていない間違いが多いので、今度まとめまーす(^_^)v

楽天ブックスで『10日でおぼえるPython入門教室』を買う


10日でおぼえるPython入門教室