|
|||||
このサイトも「googleペナルティ」を受けてしまったらしいです。「googleウェブマスターツール」 から「再審査をリクエスト」して数週間経過しました。まだgoogle様のお許しは頂けてないようです。 色々気になったのでSEO(検索エンジン最適化)ツールを作って時々チェックする事にしました。 今回作ったツールはサイト内URLチェックです。 このツールのプログラミングは少々難しく、色々(検索順位の取得方法など)調べましたので、 その中の1つ(ページランク取得方法)のサンプルを公開します。 本サンプルのパラメタになっているCheckSumですが、Googleツールバーを使用している方は、 スニファリング(盗聴)ツールを使用すればGoogleツールバーが送信しているURLで確認出来ます。 また、本サイトのCGIGoogleのPageRank取得用CheckSum(ch)計算)をお試し頂けます。 でも、このCGIはあまり自信がありません。色々調べて、サンプルソースも見つけて、本サイト用に 移植を試みたのですが、CheckSum(ch)計算には整数(Unsigned)32ビットの演算が必要なのです。 しかし、Niftyのperlのバージョンでは未対応のようで、簡単に移植出来ませんでした。 結局、足し算や引き算をオーバーフローしないようにビット演算で計算する必要があり、 やっと出来た感じですが、全てのURLに対応出来ているか自身がありません。 そんな状況をご理解の上、お試しください。 GoogleのPageRankを取得するDLL(VB.NET/C#.NET)がありますので今だけお試し頂けます。 関連情報 Googleの検索順位を取得するサンプル(VB.NET) GoogleのPageRank取得用のCheckSum(ch)を計算するサンプル(perl) サイト内URLチェック(VB.NET/C#.NET用DLL) サイト内URLチェック(ツール) ページランク表示ツール(ツール) ★標準モジュール(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 ' 2011/10/07以前--------------------- 'Dim gurl As String = _ '"http://toolbarqueries.google.co.jp/search?client=navclient-auto&features=Rank:&q=" & _ '"info:" & System.Web.HttpUtility.UrlEncode(url) & "&ch=" & ch ' 2011/10/07以降--------------------- Dim gurl As String = _ "http://toolbarqueries.google.co.jp/tbr?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 |