Latest Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。

Python でウェブページのタイトルを取得する

Python でウェブページをダウンロードしてページタイトルだけを取り出したい。Beautiful Soup というXML/HTMLのパーサを使うと簡単にタイトルを取得できる。

import urllib
import BeautifulSoup

soup = BeautifulSoup.BeautifulSoup(urllib.urlopen("https://www.google.com"))
print soup.title.string

参考ページ How can I retrieve the page title of a webpage using Python?

telnet でメールボックスにアクセスする

メールアカウントを作って送受信のテストをする時、毎回メールクライアントを設定して確認するのが面倒なので、メールボックスにメールが届いているかを確かめるだけなら telnet で接続してメールボックスのなかを覗いてみよう。

ただし、 telnet はログインの際の認証情報も認証成功後の通信内容も平文でやり取りするので、セキュリティの観点からは問題があります。このことを踏まえた上で実行してください。

POPサーバーへの接続

% telnet your.pop.server 110

接続できたらユーザー名を入力する。

USER [user name]

[user name] にユーザー名を入力しよう。[] は不用です。

「+OK Password required.」と応答があればパスワードを入力する。

PASS [password]

[password] にパスワードを入力しよう。[] は不用です。

認証されたら「+OK logged in.」というメッセージが返ってくるので、あとはメールサーバーと対話するためのコマンドを入力してメッセージを表示したりします。

コマンドの例

メッセージの一覧
list
メッセージを表示する
retr [#]。 [#] にはメッセージ番号を入力する。[] は不用。番号は list コマンドで左の列に表示される数字です。
接続を終了
quit。メールサーバーからとの接続を切断します。成功すれば「+OK Bye-bye.」と応答するでしょう。

参考ページ

アクセスログからリンク用バナーの表示回数と参照元を調べる

ウェブサイトにリンク用のバナーを掲載しているオーナー様で、リンク用バナーの利用率を知りたいと思ったことはありませんか?

トラッキング用のコードを埋め込んでいないと簡単には集計できないのですが、ウェブサーバーのアクセスログから何とかして集計する方法を紹介します。プログラムの知識が必要ですので自分で出来ない人は情報システム部門などに依頼しましょう。

# バナーがリクエストされたログを抽出する
cat access.log |
grep -F 'GET /banner.gif' |
grep -v '"http://www.mydomain.jp/'
> banner-view.txt

# 表示回数を数える
wc -l banner-view.txt

# 参照元を出力する
cat banner-view.txt |
awk -F ' "' '{print $3}' |
awk -F '"' '{print $1}' |
sort |
uniq > referer.txt

grep -v '"http://www.mydomain.jp/'には除外するサイトを指定します。通常は自社サイト内での読み込みを無視するのが適切でしょう。

アクセスログからスパムデータを削除する

アクセスログから特定のIPアドレスのレコードを削除するスクリプトです。

IPアドレスのリストは別ファイルに保存されています。

#!/usr/bin/env python
# vim: set fileencoding=utf8:
"""ブラックリストのレコードを削除する"""

__usage__ = "Usage: ip-ban.py < [log file] > [output file]"

import os
import sys

#
# スパムIPアドレスを読み込む
#
blacklist = set()

spamip_file = os.path.join(os.path.dirname(__file__), "spamdb", "banlist.txt")
fp = file(spamip_file, "r")
for banip in fp:
    blacklist.add(banip.strip())
fp.close()

#
# ログデータを読み込む
#
for line in iter(sys.stdin.readline, ""):
    ipaddr = line.split(" ")[0]
    if ipaddr in blacklist:
        sys.stderr.write("Ban!: %s\n" % ipaddr)
    else:
        sys.stdout.write(line)

sys.exit(0)

自分がよく使うコマンドを調べる (bash history)

bash の history コマンドでコマンドの使用回数を調べて自分がよく使っているコマンドを知るワンライナーです。

history | awk '{print $2}' | sort | uniq -c | sort -rn

パイプで繋がれているコマンドを解説します。

history

まずは bash の history コマンドでコマンド履歴を表示する。

awk '{print $2}'

history コマンドは1列目に番号が表示されるので、awk コマンドで2列目を取り出す。 フィールドの区切りはスペースで良いので '-F' オプションは不要。

sort

awk で取り出したコマンド名を並べ替える。

uniq -c

重複する行を削除して出現回数を表示する。ちなみに uniq は入力データがあらかじめ整列されていないと期待する結果を得ることができないので先の sort コマンドが必須である。

sort -rn

最後にコマンドの出現回数を数字の大きい順に並べ替える

出力サンプル

$ history | awk '{print $2}' | sort | uniq -c | sort -rn
 122 ls
 115 hg
  42 vim
  31 ssh
  26 cd
  16 ..
  13 rst2html-2.6.py
  13 history
  12 cat
  11 man
  11 exit
   7 rm
   7 grep
   5 port
   5 mv
   5 find
   5 fg
   4 which
   4 open
   4 lftp
   4 help
   3 whereis
   3 less
   3 echo
   2 vimdiff
   2 telnet
   2 svn
   2 sudo
   2 sh
   2 scp
   2 ll
   2 du
   2 alias
   1 uname
   1 top
   1 tail
   1 s
   1 lv
   1 ln
   1 l
   1 diff
   1 df
   1 date
   1 cp

最近 Mercurial を使い始めたので hg が上位にきてる。

Related Posts Plugin for WordPress, Blogger...