pagerankは言わずと知れたgoogleで使われているwebページの重要度を割りあてるための手法。
論文を読むまでは、ページに重み付けて、入力リンクの重み付け和を計算してるだけだろうと、ナメてました。忘れてました。彼らはStanfordの学生だったのです。
上の計算を大規模なネットワークに適用するために、グラフ理論と行列・固有値を駆使して高速に解くという学術的なことをちゃんとやってました。。
簡易版のpagerankなら簡単に実装できそうな気がしたので(気がしただけ)、pythonを使って勉強を始めようかと思います。
とりあえず、今日やったのは、
- yahooのhtml ソースを取得する
- 自分のbloggerのページから張っているリンク先のページを列挙する
です。
以下ソース。
まず一つ目。
- '''''
- sample 1
- Get html contents and automatically decode its strings
- '''
- import urllib2
- res = urllib2.urlopen("http://yahoo.co.jp")
- charset = res.headers.getparam('charset')
- html = res.read().decode(charset)
- print html
次に二つ目。
- '''''
- sample 2
- Get html contents and get the link from the page
- '''
- import urllib2
- import re
- def getHrefAddress(x):
- x = re.sub(r'^href="|^href=\'', '', x)
- x = re.sub(r'"$|\'$', '', x)
- if re.match(r'http://', x) == None or re.match(url, x):
- x = None
- return x
- url = "http://techtipshoge.blogspot.com/"
- res = urllib2.urlopen(url)
- html = res.read()
- links = re.findall(r'href=".+?"|href=\'.+?\'', html)
- links = map(getHrefAddress, links)
- links = filter(None, links)
- for link in links:
- print link
上のソースでは、正規表現でリンクを取得し、自ページ(サブページ含む)へのリンクやjavascriptへのリンクは無視しています。それらしい情報を取り出すことができました。
次は、取得したリンクから再帰的にページを辿っていくようなものを作ってみたいと思います。
0 件のコメント:
コメントを投稿