グーグルに登録されているページをチェックする方法

このQ&Aのポイント
  • エクセルでURLがグーグルに登録されているかチェックする方法について質問させていただきました。
  • 以前利用させていただいたコードがうまく動作しなかったため、再度質問させていただきました。
  • 手動で試すとグーグルに登録されているにも関わらず、判定結果が異なる場合があり、その原因が分からないため助けを求めています。
回答を見る
  • ベストアンサー

グーグルに登録されているページをチェック?(2)

以前こちらで質問させて頂いた者です。 以下の7,8の回答者様のコードが参考になり使用させて頂きました。 http://okwave.jp/qa/q6398307.html 少し上手くいかないようなので、もう1度質問させてください。 エクセルA列にはURL B列にはグーグルで検索した時にそのURLが載っているかどうかをチェックするというものです。 検索結果に載っていれば○、載っていなければ×で判定します。 そこで、上記URLの7,8の回答者さんのコードでは、B列に○、×の判定チェック。 さらにC列には検索結果の数まで載せていただきました。 スピードも速くいい感じだったのですが、ちょっと問題が生じました。 それは、手動で試してみると、グーグルに登録されているにも関わらず×の判定が多々ありました。もちろん中には正確なのもあるのですが、どうして手動と違う結果になってしまったのか分からないため質問した次第です。 ちなみに5、6の回答者さんもいい感じだったのですが、途中で止まってしまい使えない状態です。 ちぇっと、わかりずらい質問で申し訳ありませんが、もしお分かりになる方がいましたらお助けください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

失礼しました。原因は、すぐに分かりましたが、気になっていた、URL エンコードについては、再び調べてみました。 エラーの原因  約○○件 と出る部分で、直接の原因は、「約」という文字が邪魔になっているのでした。 また、正しい数字が出ていませんでしたので、それも修正しました。 以下は、そのPrivate ~ End .... というひとまとまりを、全部上書きしてください。 これで様子をみてください。 Private Sub ContentsCheck(httpLog As String, rng As Range) 'rev:101226  Dim i As Long, j As Long  Dim buf As Variant  Const STXT As String = "検索オプション</a></div><div><div id=resultStats>"  i = InStr(1, httpLog, STXT, 1)  If i > 0 Then   buf = Mid(httpLog, i + Len(STXT), 50)   j = InStr(1, buf, "件<nobr>", 1)   buf = Mid(buf, 1, j)   buf = Replace(buf, "約", "")   buf = Replace(buf, "件", "")  End If   If CLng(Val(buf)) > 0 Then    rng.Offset(, 1).Value = "○"    rng.Offset(, 2).Value = buf   Else    rng.Offset(, 1).Value = "×"   End If End Sub URLencode 関数は、Google URLに使用する記号を調べ、ひと通り変換するように補完しましたが、Google エンコードは、GoogleBot に依存しているので、違う反応を示すこともあるようです。以下のエンコード関数は、Google専用です。これは、日本語モードに限定します。 '// '注:TextCompare モードをやめましたので、記号の全角半角の区別するようにしました。 Private Function UrlEncode(ByVal sText As String) As String 'For Google encode only /rev101226 Dim buf As String Dim ar As Variant Dim c As Variant   If Len(sText) = 0 Then Exit Function   sText = Trim(sText)   With CreateObject("ScriptControl")     .Language = "JScript"     buf = .CodeObject.encodeURI(sText)     ar = Array(":", ";", "/", "=", "?", "!", "#", "$", "&", "'", "(", ")", "+", ",")     For Each c In ar      buf = Replace(buf, c, "%" & Hex(AscW(c)))     Next     UrlEncode = buf   End With End Function なお、Googleの内部ソースが変更になった場合は、この限りではありません。その場合は、ソースを取って、数字の出る部分を探してください。 今後の変更用の注意点 現在の検索の先頭部分:"検索オプション</a></div><div><div id=resultStats>" 本来は、今後のために、「件」という文字を先頭から探して、遡る方法もありますが、コードとして読みにくくなるので辞めました。 なお、2列目の表示には、○以外は、×が出る場合と、「アクセスエラー」と、「?」 の三種類があります。「?」は、プログラムエラーが発生している意味です。ただ、×の中には、Google側のGooglebot エラーもあるようですが、その検出はしておりません。 コードを変えたことで、少し反応が遅くなったはずですが、これで様子をみてください。

torasan117
質問者

お礼

Wendy02様 回答ありがとうございました。 本当に感謝します。 とりあえず、解決いたしました。 今後は、検索エンジンの変更がないのを祈るばかりですが、また、分からないことがあったら質問いたします。 今回はありがとうございました。

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

失礼します。 気がついた処を書いてみます。 ContentsCheck の buf = Mid(httpLog, i + Len(STXT), 50) j = InStr(1, buf, "件<nobr>", 1) buf = Mid(buf, 1, j) で得られるbufの値ですが 1)約_2,450_件(_は半角スペースの意) 2)約_30_件 3)1_件 といったような種類があります。 そのままでは 次のIf文のCLng(Val(buf))で 1)2)のような場合は0が返されるので×になります。 3)のような場合は1が返されるので○になります。 例えば buf = Replace(Mid(buf, 1, j), "約 ", "") のようにして余分な文字列を消去してみてください。 因みに buf = "2,450" の場合 CLng(Val(buf)) では2が返されるようです。 ≪参考≫ Val関数 http://officetanaka.net/excel/vba/function/Val.htm

torasan117
質問者

お礼

回答ありがとうございます。 参考にさせて頂きます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

前回、ちょっと触れていた内容なのですが、 >URLEncode関数は、詳しい検討はなされていません。 Private Function UrlEncode(ByVal sText As String) As String (UTF-8の変換関数)には、不安が残っています。前回は、// : の二つしか変換されなかったはずです。つまり、URLで使用する記号には、? & などがありますが、私が検査したのは、oshietegoo.jp だけですから、単純なURLです。 違う結果になった所で、直接、Googleに入力した場合と、関数で変換した場合と、そのURLの比較していただけませんか?昔、Yahooで同じようなものは作った覚えはあるのですが、今のところ記録が残っていません。こちらで、そういう現象を探すということも不可能ではありませんが、出来れば、ご指摘していただいたほうが早いです。他の部分では、思い当たる部分がないとは言えませんが、修正したはずなのです。ただし、同じ(×)が返っても、必ずしも同じ意味でないこともあります。

torasan117
質問者

補足

Wendy02さん回答ありがとうございました。 私には関数とかは良くわからないので具体的に書きます。 例えば以下のURLなのですが、グーグルで直接検索してみるとちゃんと検索されるのですが、Wendy02さんのプログラムの判定では×になってしまいます。 http://daily.xsrv.jp/takkyuu/ http://daily.xsrv.jp/takkyuu/tishiki/0001.html http://health-care119.com/fuminsyou/ 他にもいろいろなURLがあるのですが、結構このような現象があるので、今回また質問させていただきました。

関連するQ&A

  • グーグルに登録されているページをチェックしたい?

    エクセルのA列にはURLが600ぐらいあるとします。 ある仕事をたのまれたのですが、 各ページがgoogleに登録されているかをチェックしています。 そこで効率のよいやり方(マクロ)があったら教えていただけないでしょうか? B列には登録されている場合は「○」をつけ、登録されていない場合は「×」と記入しています。 IEを開いてgoogoleのページでコピペで調べているのですが、しんどいです。 どなたかお助けください。 よろしくお願いします。

  • GOOGLEへの登録について

    GOOGLEにURLを登録をし、検索でタイトルが引っかかるようになったのですが、GOOGLEはサイトの説明をURL登録時に入力出来ない為、検索結果にサイトの上位の文字がサイトの説明として表示されてしまいます。 適切なサイトの説明を表示する為にはどうすれば良いのでしょうか? 単にサイトの上位の文字を変更すれば良いと思っていましたが、他のサイトを確認すると、そのページ上に書いていないサイトの説明が検索結果のサイト説明部分に表示されていました。 このような方法はどうすれば良いのでしょうか? どなたか教えて頂けないでしょうか?

    • ベストアンサー
    • HTML
  • google 検索

    google 検索で 違う海外のゲームや スピードチエックなどのサイトが 上位の検索結果にでるのは 何故なのでしょうか? ブラウザーはFireFoxです。

  • Google検索の結果、5位までをセルに記入するマ

    A1|B1|C1|D1|E1|F1| のそれぞれの1行目に、検索したい語句が記入されています。 その検索したい語句の検索結果(5位まで)を、 それぞれの1行目の下へ表示させたいです。 取得して記入したいデータは、「タイトルとURL」です。 A1|B1| タ|タ| URL|URL| ずっと、これを手動でやっていたのですが、 調べる語句がかなり増えてしまい、マクロで自動化したいです。 いくつかGoogle検索をしたら、 ロボットでない証明のクリックをしないとならないです。 おそらく、休み休みで動かす様になるかと思いますが、 Google検索の結果をExcelに取得するというのは、マクロでできるでしょうか? できるとしたら、どのようなマクロの記述でできるでしょうか? Excel2016を使っています。 よろしくお願いいたします。

  • グーグルに登録されているかをチェックする場合

    エクセルのE列にURLがあるとします。(数は500~1000ぐらい) F列には、E列にあるURLをグーグルで検索し、検索結果がある場合は、「○」ない場合は「×」で判定します。 G列には、グーグルで検索結果の約○○件、あるいは○件、これら○に入る数字を取得したいです。 そこで、以前、同じことを教えてもらったのですが、グーグルの使用が変更になったせいかすべて検索結果が「×」判定となってしまいました。 そのコードが下記なのですが、どこを修正すればいいのか教えてください。 よろしくお願いします。 '標準モジュール Private Const SKEY As String = "http://www.google.co.jp/search?hl=ja&q=" Public Sub GoogleCheckers() Dim c As Range Dim buf As String Const qt As String = "" With ThisWorkbook.Sheets("登録チェック") For Each c In Range("E6", Cells(Rows.Count, 5).End(xlUp)) If c.Value <> "" Then Application.ScreenUpdating = False buf = UrlEncode(c.Value) buf = SKEY & buf ItemCehck buf, c Application.ScreenUpdating = True End If Next End With End Sub Private Sub ItemCehck(ByVal strURL As String, iRng As Range) Dim rng As Range Dim objHTTP As Object Dim i As Long, j As Long Dim c As Variant Dim httpLog As String Dim msgbuf As Variant Dim LimitNum As Long On Error GoTo ErrHandler Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") objHTTP.Open "GET", strURL, False objHTTP.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-JA; rv:1.9.2.12)" objHTTP.Send If Err.Number = 0 Then If objHTTP.Status = 200 Then httpLog = objHTTP.ResponseText Call ContentsCheck(httpLog, iRng) ElseIf objHTTP.Status >= 400 Then iRng.Offset(, 1).Value = "アクセスエラー" End If Else iRng.Offset(, 1).Value = "?" End If Exit Sub ErrHandler: iRng.Offset(, 1).Value = "不明" End Sub Private Sub ContentsCheck(httpLog As String, rng As Range) 'rev:101226 Dim i As Long, j As Long Dim buf As Variant Const STXT As String = "検索オプション</a></div><div><div id=resultStats>" i = InStr(1, httpLog, STXT, 1) If i > 0 Then buf = Mid(httpLog, i + Len(STXT), 50) j = InStr(1, buf, "件<nobr>", 1) buf = Mid(buf, 1, j) buf = Replace(buf, "約", "") buf = Replace(buf, "件", "") End If If CLng(Val(buf)) > 0 Then rng.Offset(, 1).Value = "○" rng.Offset(, 2).Value = buf Else rng.Offset(, 1).Value = "×" End If End Sub Private Function UrlEncode(ByVal sText As String) As String Dim buf As String If Len(sText) = 0 Then Exit Function With CreateObject("ScriptControl") .Language = "JScript" buf = .CodeObject.encodeURI(sText) buf = Replace(buf, ":", "%3A", , , 1) buf = Replace(buf, "/", "%2F", , , 1) UrlEncode = buf End With End Function

  • google検索結果のページに戻れない

    Internet Explore 8を使用していますが、google検索結果のページに戻れなくなりました。 http://www.google.co.jp/url?url=http://にリダイレクトされてしまいます。 googleの設定の変更とかExploreのリセットをしましたが、変わりません。 アドオンの無効もしましたが直りません。 ただ、googleのアカウントからログアウトすると、戻れるようになります。 今まで問題なかったのですが、突然この事象になったので、困っています。

  • Googleの検索結果のURLについて。

    Googleで「OKWeb」と検索すると http://www.google.com/search?num=50&lr=lang_ja&q=%4F%4B%57%65%62 という検索結果のURLになるのですが、このURLの「%4F%4B%57%65%62」の部分は どういった変換がされているのでしょうか。何かのコードに変換されているのですか? 逆に「%4F%4B%57%65%62」が「OKWeb」だと知りたい場合はどうすれば良いのでしょう。 これはGoogle独自の仕組みなのか、それとも他にも使用されている技術なのかも気になります。 技術者カテに投稿しましたが、私は単なる好奇心で聞いている一般人なので、 なるべく易しく解説してくださると嬉しいです。(上の説明がわかりづらかったら補足します) お分かりになる方、どうぞよろしくお願いします。

  • googleの登録について

    何度も質問されているだろうと思い、色々調べましたがいまいち明瞭な答えが見付からなかったので質問させて頂きます。 私は自分のホームページを一年か一年半位前から公開し、googleのサイト登録の申請ページから何度となく申請しているのですが、今だgoogleの検索結果に登録されていない様です。 ウェブマスターツールで調べてみると、「お客様のサイトが Google インデックスに登録されました。」という表示があり、インデックスには登録されている様です。しかし、検索窓で自分のサイトURLを直接入力してもありませんと表示されます。 サイトマップも登録し、「サイト確認の管理」というものもhtmlファイルの方をアップロードし認識されています。しかし登録はされません。 サイト名で検索するとリンクページにて相互リンクサイトでリンクしている他のページがズラリと表示され、検索結果の一番最後の所に表示される事もあれば表示されない事もあります。 ホームページは雑誌に付いていたテンプレートを元に作成した物であり、スタイルシートも利用しています。サーバーはプロバイダのOCNの無料の物を利用、サイトのトップページ等にはi2iのアクセス解析やアクセスランキングを付けています。 yahooやmsnにはすでに登録されています。googleにだけ登録されません。なぜ登録されないのか分かる方おられましたら回答をお願いします。

  • googleに登録されたのか確認する方法

    ブログを2ヶ月前に作ったのですが、URLで検索すると検索できるのですが、ブログのタイトルのキーワードで検索すると検索結果をすべて見てみても見当たりません。 googleは他のサイトからリンクを貼られていないと登録されないようなのですが、ブログの場合はそのブログを提供しているサイトからリンクが貼られているということにはならないのでしょうか。 それともう一つ別のブログを一週間前くらいに作ったのですが、こちらはpingサーバなどに登録したりしたのでもうキーワードで検索できるようになりました。リンクを貼られているというのはこういうことなのでしょうか。 でもlink:ブログのURLで検索してみたら何も出てきません。 googleに登録されたのかどうか、どうすれば確認することが出来るのでしょうか?

  • Google chrome→検索→キャッシュがない

    Windows7を使っています。 Google chrome、Google検索について質問です。 新しいPCに変えてからは 「キャッシュ、関連リンク」といったリンクが検索結果に出なくなりました。 検索結果からキャッシュでページを開きたいです。 どなたか方法を教えてください! 試したこと; 開きたいURLに対して「cache.URL」で開く >>そもそも検索結果に出ている緑のURLが途切れて表示されていたため、コピーすらできませんでした。 宜しくお願いします。

専門家に質問してみよう