|
GoogleのPageRankを取得するサンプル(VB.NET)

|
このサイトも「googleペナルティ」を受けてしまったらしいです。「googleウェブマスターツール」から
「再審査をリクエスト」して数週間経過しました。まだgoogle様のお許しは頂けてないようです。
色々気になったのでSEO(検索エンジン最適化)ツールを作って時々チェックする事にしました。
今回作ったツールはサイト内URLチェックです。
このツールのプログラミングは少々難しく、色々(検索順位の取得方法など)調べましたので、
その中の1つ(ページランク取得方法)のサンプルを公開します。
本サンプルのパラメタになっているCheckSumですが、Googleツールバーを使用している方は、
スニファリング(盗聴)ツールを使用すればGoogleツールバーが送信しているURLで確認出来ます。
また、本サイトのCGIGoogleのPageRank取得用CheckSum(ch)計算)をお試し頂けます。
でも、このCGIはあまり自信がありません。色々調べて、サンプルソースも見つけて、本サイト用に
移植を試みたのですが、CheckSum(ch)計算には整数(Unsigned)32ビットの演算が必要なのです。
しかし、Niftyのperlのバージョンでは未対応のようで、簡単に移植出来ませんでした。
結局、足し算や引き算をオーバーフローしないようにビット演算で計算する必要があり、
やっと出来た感じですが、全てのURLに対応出来ているか自身がありません。
そんな状況をご理解の上、お試しください。
関連情報
Googleの検索順位を取得するサンプル(VB.NET)
GoogleのPageRank取得用のCheckSum(ch)を計算するサンプル(perl)
サイト内URLチェック(ツール)
ページランク表示ツール(ツール)
CheckUrlRank(ツール)
★標準モジュール(Module1.vb)
Imports System.IO
Imports System.Net
Module Module1
''' <summary>
''' Googleページランク取得
''' </summary>
''' <param name="url">URL</param>
''' <param name="ch">CheckSum</param>
''' <returns>Googleページランク</returns>
''' <remarks></remarks>
Public Function GetPageRank(ByVal url As String, ByVal ch As String) As String
Dim gurl As String = _
"http://toolbarqueries.google.co.jp/search?client=navclient-auto&features=Rank:&q=" & _
"info:" & System.Web.HttpUtility.UrlEncode(url) & "&ch=" & ch
Dim dat As Byte()
dat = GetWebPage(gurl)
If dat.Length > 0 Then
Dim html As String = System.Text.Encoding.GetEncoding("UTF-8").GetString(dat)
Dim prk As Integer = Val(Split(html & "::", ":")(2))
Return prk
Else
Return "-"
End If
End Function
''' <summary>
''' Googleページランク用Webページ取得
''' </summary>
''' <param name="url">Googleページランク用URL(クエリ)</param>
''' <returns>Googleページランク用Webページ</returns>
''' <remarks></remarks>
Private Function GetWebPage(ByVal url As String) As Byte()
Dim st As Stream = Nothing
Dim wbres As WebResponse = Nothing
Try
Dim url_uri As New Uri(url)
Dim dat As Byte() = New Byte(-1) {}
Dim wbreq As WebRequest = CType(WebRequest.Create(url), HttpWebRequest)
CType(wbreq, HttpWebRequest).UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)"
CType(wbreq, HttpWebRequest).Headers.Add("Accept-Language", "ja")
wbres = wbreq.GetResponse()
st = wbres.GetResponseStream()
Dim bytes As Byte()
Dim ttlSiz As Integer = 0
Dim oneSiz As Integer
Do
ReDim bytes((1024 * 100) - 1)
oneSiz = st.Read(bytes, 0, bytes.Length)
If oneSiz > 0 Then
ReDim Preserve dat(ttlSiz + oneSiz - 1)
If oneSiz <> bytes.Length Then
ReDim Preserve bytes(oneSiz - 1)
End If
bytes.CopyTo(dat, ttlSiz)
ttlSiz = ttlSiz + oneSiz
End If
Loop While (oneSiz > 0)
Return dat
Catch ex As Exception
Throw ex
Finally
If st Is Nothing = False Then
st.Close()
st = Nothing
End If
If wbres Is Nothing = False Then
wbres.Close()
wbres = Nothing
End If
End Try
End Function
End Module
★フォームモジュール(Form1.vb)
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim url As String = "http://www.google.co.jp/"
Dim ch As String = "61754545690"
Dim pr As Integer = GetPageRank(url, ch)
MessageBox.Show("ページランクは " & pr & " です。")
End Sub
End Class