いまさらかよって感じですが、通勤電車の中とかでちょこちょこ読み進んで今朝やっと
読み終わりました。
あ、そんなんできたんだっていう気づきがあったり、使ったことのない標準ライブラリ
のサンプルコードが見れたりして良かったです。さすが日本人が書いただけあって文章
が読みやすいし、適度な分量でPython言語が一通り眺められていい感じです。
私は、はじめてのPythonはかなり気に入っていて、第一版も第二版も持っているのです
が、一からPythonを勉強しようっていう場合に、さすがにチュートリアルの次に読むに
は分量も難易度もなかなか高いので、チュートリアル → みんぱい → はじぱいと進む
と無理なく学習が進められていいんじゃないかな、と思いました。
確かこんなんだったと思います。
を読んでその話もどこかで書いたような気がするなーと思ったので、探してみたところ、
のコメント欄にて、その話題には触れているものの、どうしたかっていう話には触れて
いなかったので、記憶を頼りに再構築してみました。しかしながら今は他の修正も入っ
ちゃってるのと、私が実際に使っているcomments.pyはちょっと古いので、動くかどう
か無保証です。
[161]% diff -u comments.py.org comments.py
--- comments.py.org 2006-11-28 02:21:20.281250000 +0900
+++ comments.py 2006-11-28 02:40:25.390625000 +0900
@@ -351,9 +351,14 @@
cfn = os.path.join(cdir,entry['fn']+"-"+comment['pubDate']+"."+config['comment_draft_ext'])
argdict = { "request": request, "comment": comment }
- reject = tools.run_callback("comment_reject",
- argdict,
- donefunc=lambda x:x != 0)
+
+ if comment['author'].find('Trackback from') != -1:
+ # This is trackback.
+ reject = 0
+ else:
+ reject = tools.run_callback("comment_reject",
+ argdict,
+ donefunc=lambda x:x != 0)
if (isinstance(reject, tuple) or isinstance(reject, list)) and len(reject) == 2:
reject_code, reject_message = reject
あと、これを書いてて思い出した。
の機能を私はなぜかcomments.pyプラグインの方に実装していて、trackbackの機能なん
だから上記サイトにあるようにtrackback.pyプラグインに実装するほうが正しいような
気がするのになんでそんなことしたのかなーと思ってたんだけど、そうそうMagciWord
を入れるとトラックバックを受け取らなくなるのの対策で上記修正をすでに
comments.pyに入れてたから、それを利用したんだった。なんか納得。
今日は、なんだか風邪っぽかったので早めに帰宅してみた。せっかく時間が早いんだか
らと本屋さんに寄ったら、以前なんかでちらっとみて気になっていた本があったので思
わず買ってしまった。
風邪っぽくて頭がボーっとしてる状態で読む本か?という感じは非常にしますが ^^;
カーネル内部の挙動とかよくわかってなくて、前からやっぱりカーネルの動きがわから
んとちゃんとしたプログラミングできないよなーって思ってたので、理解できるのかど
うかわかりませんが買ってみました。
とりあえず「第0章 Linuxカーネルの構成要素」だけ読みました。概要なのですが、と
りあえずここまでは読みやすかったですが、この後の各機能詳細は、どうかな?しばら
く取り組んでみます。
mechanize使ってみた。
- proxy設定
- User-agent設定
- basic認証
- <form><textarea>テキスト</textarea></form>のテキストを取得
するようなコード。
mechanizeって、ブラウザ風に動くためのものだから、formやらlinkを取得/設定するよ
うな関数はあるんだけど、BeautifulSoupみたいにいろんなタグにアクセスするための
機能はなさそうな感じ。でもmechanizeってBeautifulSoup機能を取り込んでるんだよね
。モジュールとして呼び出してるんじゃなくて、内部に実装されてるの。どういう関係
にあるんだろう?
import mechanize
br = mechanize.Browser()
br.set_proxies({})
br.addheaders = [('User-agent', 'Mozilla/5.0')]
br.add_password('http://xxx.xxx.xxx.xxx/', 'account', 'passwd')
br.open('http://xxx.xxx.xxx.xxx/index.html')
enc = br.encoding()
for form in br.forms():
try:
text = form.find_control(type='textarea').attrs['value']
print unicode(text,enc).encode('utf8')
break
except KeyError, ClientForm.ControlNotFoundError:
pass
しばらく前から mechanize を使ってみようと試してるんだけど
職場のWindowsXP+Cygwin環境では、ネットワーク的にすぐ隣にある
linuxマシンのページにもアクセスできなかった。
>>> import mechanize
>>> br = mechanize.Browser()
>>> br.open('http://xxx.xxx.xxx.xxx/')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.cygwin-1.5.21-i686/egg/mechanize/_mechanize.py", line 156, in open
File "build/bdist.cygwin-1.5.21-i686/egg/mechanize/_mechanize.py", line 214, in _mech_open
mechanize._response.httperror_seek_wrapper: HTTP Error 500: Server Error
>>> mechanize.urlopen('http://xxx.xxx.xxx.xxx/')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.cygwin-1.5.21-i686/egg/mechanize/_opener.py", line 371, in urlopen
File "build/bdist.cygwin-1.5.21-i686/egg/mechanize/_opener.py", line 191, in open
File "build/bdist.cygwin-1.5.21-i686/egg/mechanize/_http.py", line 573, in http_response
File "build/bdist.cygwin-1.5.21-i686/egg/mechanize/_opener.py", line 214, in error
File "/usr/local/lib/python2.5/urllib2.py", line 353, in _call_chain
result = func(*args)
File "/usr/local/lib/python2.5/urllib2.py", line 499, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: Server Error
urllib2でエラーが発生してるように見えるんだけど、普通にurllib2でアクセスする分
には全然問題なくアクセスできたんだよなー。
Continue Reading...: "mechanizeを使ってみる"