[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
3391757 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

傀儡師の館.Python

傀儡師の館.Python

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

Recent Posts

Calendar

Keyword Search

▼キーワード検索

Category

Archives

2025.03
2025.02
2025.01
2024.12
2024.11
2024.10
2024.09
2024.08
2024.07
2024.06

Freepage List

Profile

kugutsushi

kugutsushi

Free Space

設定されていません。
2006.10.15
XML
カテゴリ:その他
mechanize (Web ブラウジングをプログラムするための Python のモジュール) を使ってみることにした。mechanize は、Andy Lester さんの WWW::Mechanize (Perl 版) を参考に Python で実装したものようだ。WWW::Mechanize の日本語情報を眺めてみる。このページにあるものや、サンプルスクリプトが参考になりそうだ。file upload script for sourcefourge.jp のように Mecab の sourceforge.jp へのアップロードにも使われているようだ。これも参考になるスクリプト。

urllib を使えばページをとってきたりするのは楽にできるのだが、その後、とってきたページを解析して、そこからフォームを取り出して、フォームに自動入力してポストしたりだとか、ページの一部を切り出したりだとか、そういうことをやるには mechanize を使ってしまうのが楽そう。今さらながらクッキー もあるか。

IE に依存して自動操作をしたいときに参考になるページPAMIE も見つけた。やはりこれも、SAMIE(Simple Automation Module For Internet Explorer) という Perl のモジュールから派生した Python 版のようだ。PAMIE の使用例は、動トレードシステム本体 のページにあった。

Perlモジュール/WWW::Mechanize に Yahooニュースの今日の記事一覧を取得 というのがあるので同じようなことを Python でやってみる。

mechanize の インストール


とりあえず、今は Linux を使っているので、

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo easy_install mechanize

でインストール完了。

Yahooニュースのコンピュータ一覧の記事一覧を取得



とりあえず、ページをとってきてみる。

import mechanize


# ブラウザオブジェクトで URL を開く
br = mechanize.Browser()
br.open('http://headlines.yahoo.co.jp/hl')
enc = br.encoding()

# ページのエンコーディングに検索文字もあわせる
category_label = unicode('コンピュータ一覧', "utf-8").encode(enc)
next_label = unicode('次のページ', "utf-8").encode(enc)
links = []


# 指定カテゴリの一覧の取得
br.follow_link(text_regex=category_label)

while 1:
  try:
    # リンクをリストに追加
    links += [x for x in br.links(url_regex='/hl\?a=')]
    # 「次のページ」があれば処理
    br.follow_link(text_regex=next_label)
  except:
    break

# 出力
for l in links:
  print "%s [%s]" % (unicode(l.text, enc), l.url)

(上記のリストは全角スペースを使ってできるだけレイアウトが崩れないようにしているので、全角スペースを半角スペースに変換しないと動きません。)

文字コードの変換が面倒かつ見苦しいので、ちゃんと調べてきれいにやった方がいいか。だいたい同じようなものになるかな。ん、これだとアクセスランキングの方も表示されちゃう。ま、とりあえず、使いかたが確認できたのでよしとするか。

フォームに値を入れて submit するのもやってみる。楽天にログインさせようとしたら、robot だと 403 を返してくる。

RobotExclusionError: HTTP Error 403: request disallowed by robots.txt

Robot じゃないよとするためには、br.set_handle_robots(False) としてやればよいようだ。まあ、なかなか役立ちそうな感じがする。







お気に入りの記事を「いいね!」で応援しよう

Last updated  2006.10.15 07:40:00
コメント(1) | コメントを書く
[その他] カテゴリの最新記事



© Rakuten Group, Inc.
X