トップ «前の日記(2007-03-12) 最新 次の日記(2007-03-14)» 編集

AOISAKURA 日記

2003|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|04|05|06|07|08|09|12|
2013|02|03|05|06|08|09|10|11|
2015|11|
2016|12|
2017|03|08|
2018|01|03|06|
2019|05|07|09|10|
2020|01|02|03|
2021|03|07|
2022|06|
2023|11|

pixiv / twitter

bluesky / misskey / pawoo

※発信する情報は、個人の見解・意見であり、所属する会社の見解・意見ではありません。


2007-03-13 さて持続できるか [長年日記]

_ [linux] Gentoo in Crisis?

ごぁーまじかよー。とは言いつつ本筋追いかけられていないんでアレやけども。よくあることだろうとはいえ気分悪い話。

matsuuさんのフォロー。

_ [python][mail] 定期的にwebから情報拾って自分のケータイにメールを投げるスクリプト...の予定

webから情報拾ってくるところは後にして、メールを投げるpythonスクリプトは以下でいけそう。日本語について何も考えて無いのでちゃんと調べないといかんけど。

import smtplib
server = "192.168.99.99" # smtpサーバのホスト名
from_addr = "xxx@from.com"
to_addr = "xxx@to.com"
msg = ("From: %s\r\nTo: %s\r\n\r\n" % (from_addr, to_addr)) + "contents"
smtpserv = smtplib.SMTP(server)
smtp.sendmail(from_addr, to_addr, msg);

まぁpythonのライブラリリファレンスのまんま。定期的に送るのはcronを使うことにする。

_ [python][web] htmlファイルを処理する

さて、メールで送る内容を取得・処理する側の話。過去に何度か調べてはダルそうで躊躇してきたpythonのHTMLParserライブラリ。躊躇してきた理由は、標準ライブラリのHTMLParserを拡張して処理をさせるっていうのがすげぇ面倒臭い。大体、HTMLを扱いやすいように構造化させるのっていかにも既に作られていそうだったし。

まずはlibxml2がどうやらちゃんとしてないHTMLでも解析してくれるらしいのでlibxml2のpythonバインディングを使ってxmlのように扱ってみることにした。参考にしたのは以下のサイト

上のサイトを参考に、以下のようなスクリプトを書いた。

import urllib2
import libxml2
f = urllib2.urlopen('http://www.hatena.ne.jp')
html = f.read()
f.close()
doc = libxml2.htmlReadDoc(html, '', None, 
      libxml2.HTML_PARSE_RECOVER +
      libxml2.HTML_PARSE_NOERROR +
      libxml2.HTML_PARSE_NOWARNING)
links = doc.xpathEval('//a')
for link in links:
    href = link.xpathEval('attribute::href')
    if len(href) > 0:
        href = href[0].content	
        print href
doc.freeDoc()

が、何も表示されない。htmlReadDoc()の出力はxmlDocのオブジェクトだけど、中身が何も無い。htmlReadDoc()の引数いじったり、英語のサイトでやってみたり、すごい単純なhtmlファイルをローカルに作ってやってみたりしたけど結果は皆同じ。で、作ったすごい単純なhtmlファイルをxmlファイルとして、xmlPasreDoc()で読ませたらうまくいった。が、これでは意味が無いのでlibxml2を使うことは止めにして他のを探すことにした。

探していたら、Beautiful Soupというライブラリがあり、しかもすごい使い易そうというわけでこっちを使うことに。どんなことができるのかは、以下のサイトを見ればわかるかと、もしくはBeautiful Soupのクイックスタート

htmlタグのname、attrをキーに簡単にアクセスできるし、要素を辿るためのメソッドも揃ってる。ドキュメントを読みながら電車の中で現在試してるところ。これでいけそうだ、っていうか十分。

portageで配布されているので、家の環境にはこっからインストール、ありがとーGentoo。ノートのVine上ではpython関連はvineのaptでは管理しないという方針でそのままインストール。

_ [python][web] libxml2のscriptうまくいった...

一つ前の記事のscript、家の環境でやったらうまくいったよ...、アレー。

家と仕事先で試したときの違いはいくつもあるけど、その中のどれだろ、直接的に影響のありそうなのって無いと思ってたんだけどなぁ。

むぅ、ローカルに保存したファイルでもうまくいく...。まぁ明日調べるか。なんか文字コード絡みな悪寒。