• ベストアンサー

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

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

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

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

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 #3,4 の回答者です。私に答えないなら、もう、ご質問者さんに対して何も言いませんので、こちらの思惑で書かせていただくことにします。こちらでは成功していますから、特に問題はないはずです。IEオートメーションを使っている方には、今回のコードが参考になれば、幸いです。環境の違いなどの差は一切考慮しません。 上記のUrlEncode関数は、ほとんど利用価値はありませんが、もともとは単語を調べるためのものです。Quotation Mark("")で囲む必要かと思いましたが、差が出ませんでした。汎用性を残すために、これは使ったほうがよいです。ただ、URLEncode関数は、詳しい検討はなされていません。 本格的に使用する場合は、参照設定をしてください。そちらのほうが速いです。ItemCehckサブルーチンのobjHTTPオブジェクトは解放するコードが入っていません。本来は、モジュール・スコープでオブジェクトを置き、GoogleCheckers側の最後で解放するのがよいです。ESC等で途中で止めても弊害はないようです。 こちらの検索は、IEオートメーションは使ってはいませんが、IE8, Excel2003, Windows XP SP3ですが、RequestHeaderは、標準的な環境を使いました。開発ツールのDebugBurは必須かもしれません。ただ、ハッキングツールの一種として扱われているかもしれません。詳しく知りたい方は、「Webスクレイピング」で検索してみるとよいです。 実験結果として、Gooサイトでの個別のURLの一覧検索で、100件(#6400060~)で、およそ、2分以内で完了しました。ヒット32個(B列) 最高ヒット数3(C列)A列にURLを置きました。600個でも可能なはずです。ただし、サーバーからストップ掛かる時は、確か、503とかのエラーが返るはずです。

torasan117
質問者

お礼

回答ありがとうございました。 早速試させて頂きました。 スピードの速さに驚きました。 昨日まで、手作業で行っていたため、このような事が出来て本当に感謝いたします。 今回はいい勉強をさせていただきました。 ありがとうございます!

その他の回答 (7)

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

コメントは、次の書き込みの最後 二面に続けて書きます。 '標準モジュール 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 = "" For Each c In Range("A1", Cells(Rows.Count, 1).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 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)  Dim i As Long, j As Long  Dim buf As String  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)  End If   If CLng(Val(buf)) > 0 Then    rng.Offset(, 1).Value = "○"    rng.Offset(, 2).Value = Val(buf)   Else    rng.Offset(, 1).Value = "×"   End If End Sub '次に続く

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.6

補足、ありがとうございます。 質問1  仮にまとめて、1000以上とかやる場合にグーグルの方で  制限がかからないかちょっと心配です?  10件検索したら30秒は休ませるなんてことができたらいいのですが・・・ >Sleep 10000 'テストが終わったら削除する   ↓ if (i Mod 10) = 9 then sleep 30000 '10処理するごとに30秒休む 質問2  今ある600ぐらいのURLでは、途中で抜けているURLがいくつかあります。  もし、空白があったらそこは検索しないで飛ばすなんてことはできないでしょうか? >For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row >ie.Navigate ("http://www.google.co.jp/")   ↓  For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row  if .Range("A" & i) <> "" then  ie.Navigate ("http://www.google.co.jp/") >End If > >Next i   ↓  End If  End If  Next i それから、テストが済んだら次の行は削除してもいいかも ie.Visible = True

torasan117
質問者

お礼

回答ありがとうございました。 昨日まで手作業をやていたのがうそみたいです。 いろいろ書いていただき本当にありがとうございました。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.5

試してみて Option Explicit Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Web_check() Dim sss As String Dim ie As Object Dim i As Long With ThisWorkbook.Sheets("Sheet1") .Range("A2") = "http://okwave.jp/qa/q6398307.html" 'テストが終わったら削除する .Range("A3") = "http://oshiete.goo.ne.jp/qa/16398307.html" 'テストが終わったら削除する Set ie = CreateObject("InternetExplorer.application") ie.Visible = True For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row ie.Navigate ("http://www.google.co.jp/") Do Until ie.busy = False Sleep 100 DoEvents Loop ie.Document.all.q.Value = .Range("A" & i) ie.Document.all.btnG.Click Do Until ie.busy = False Sleep 100 DoEvents Loop sss = ie.Document.body.innerHTML Sleep 10000 'テストが終わったら削除する If InStr(sss, "一致する情報は見つかりませんでした") Then .Range("B" & i) = "xxxxxx見つかりませんでした。" Else .Range("B" & i) = "oooooo見つかりました。" End If Next i End With ie.Quit Set ie = Nothing End Sub 皆さんへの補足を見て仕上げましたが、 この作業にどういう意味が有るか解りませんでした。

torasan117
質問者

お礼

回答ありがとうざいます。 今、20ぐらいのURLを試しにやってみたのですが、 いい感じです。感激です。 あと気になる事が2つ程あるので質問させてください。 質問1 仮にまとめて、1000以上とかやる場合にグーグルの方で 制限がかからないかちょっと心配です? 10件検索したら30秒は休ませるなんてことができたらいいのですが・・・ 質問2 今ある600ぐらいのURLでは、途中で抜けているURLがいくつかあります。 もし、空白があったらそこは検索しないで飛ばすなんてことはできないでしょうか? 大変、わがままな質問ですが、教えてただけると本当に助かります。 よろしくお願いします。

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

#3で、質問を読み間違えました。 単語を調べるのだと勘違いました。 しかし、URLを登録しているという意味が返って良く分かりません。 単に、URLがヒットするかどうかの問題ではありませんか? なぜ、Google が関係してくるのか、ページが関係するのか、分かっていません。

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

>IEを開いてgoogoleのページでコピペで調べているのです 少し確認させてほしいのですが、Googleの「ページ」というのは何ですか?調べると、100ページはないはずです。Googleにページというのは言葉は出てきますが、70ページを越えた頃から怪しくなります。それ以上は、出せないというメッセージが出てきます。 一体、何をどう調べているのか教えてください。 件数ではいけないのですか? 以下は、約何件と出てくる部分を取り出したものです。 >B列には登録されている場合は「○」をつけ、登録されていない場合は「×」と記入しています。 登録されていない、という意味はなんですか? 例:$%%#%$# という言葉では確かに出てきませんが、ほとんどはヒットするはずです。 よほどおかしな言葉ではない限りは、ヒットするはずです。  A列  B列  C列 エクセル ○ 8,600,000 ワード  ○ 64,300,000 MS-Office ○ 25,100,000 クラウド ○ 20,300,000 オフコン ○   61,500 $%%#%$#  × また、本来は、10件以下とかは、危うい内容だということになります。 なお、質問では、環境が書かれていませんが、今回は、特別で、Excel, OS, IEなどのバージョンを一応、明示してください。ただし、OS が、Mac の場合は、おそらくこちらでは、コードは提示しても、動かない可能性があります。 もちろん、こちらでは、IEオートメーションは使いませんが、Googleでは、Header に、表示してあげないと、エラーが発生するようです。別にウソを入れても関係ないのですが、一応、念のためということで、教えてください。 また、検索用語は、どんなものを入れているのでしょうか? 通信環境やPCのパワーにもよりますが、600件でも、10分程度で終わるはずです。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

あまりインターネットサイトに詳しくないので「グーグルに登録されているページ」という意味がよくわかりません。 とんちんかんなことを言ってたらごめんなさい。 もしエクセルのA列に記載されているURLを自動で開いてくれるマクロが必要ということなら以下をお試しください。 1.URLをA列に記載したシートのシートタブをクリックして、コードの表示を選択 2.現れたシートモジュールに以下をコピペ 3.ALT+F11キーでシートに戻る これでA列のセルをクリックしたら、記入されたURLのサイトが開きます。 下向矢印↓キーで順順に見ていけます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Dim tmp As String   If Target.Count > 1 Then Exit Sub '複数セル選択を除外   If Target.Column <> 1 Then Exit Sub 'A列以外を除外   If Target.Value = "" Then Exit Sub '空白セルを除外   On Error Resume Next   tmp = objIE.Name 'IEが起動しているかチェック(.Nameプロパティ取得できたらOK)   If Err.Number <> 0 Then 'エラーなら起動していないので起動する。     Set objIE = CreateObject("InternetExplorer.Application")   End If   On Error GoTo 0   With objIE     .Navigate Target.Text     .Visible = True     Do While .Busy = True       DoEvents     Loop   End With End Sub ほんとなら、ページが存在しないと自動的にB列に丸をつけられればいいのですが,ページが無いという判定をどうすればよいのか思いつきません。

torasan117
質問者

お礼

ご回答ありがとうございます。 ちょっと、思っていたのと違いました。 グーグルに登録されているページというのは グーグルにキャッシュされていて検索した時に そのURLがグーグルのデータベースに載っているかどうかです。 もし、登録されていなければ、URLを検索しても 「http://~.comに一致する情報は見つかりませんでした。」 と表示されます。 でも、ソースを書いていただきありがとうございました。

  • g_liar
  • ベストアンサー率52% (382/728)
回答No.1

やるとしたら・・・マクロというかExcel VBAを使って以下のようなプログラムを組む必要があります。 (1)VBA内部でInterlnet Explorerオブジェクトを生成。 (2)A列のURLを取得し、googleの検索URLを作ってInterlnet Explorerオブジェクトに渡す。 (3)googleからの応答(=Interlnet Explorerオブジェクトの処理終了)を待つ。 (4)googleから返されたHTMLをInterlnet Explorerオブジェクトから取得し、解析する。 (5)解析の結果、googleに登録済みならB列に「○」を挿入。 (6)シートに未解析分がなければ終了。あれば(2)へ。 たぶん4~50行程度のプログラムになるかな? 上に書いたことですぐにプログラムが思い浮かぶようなら、プログラムを作った方が早く作業が終わるでしょう。 どうすればよいかチンプンカンプンなら600個を手作業で確認した方が早く終わります。 同様の作業を将来的にも行うのでしたら、今のうちに勉強してプログラムを作っておいても良いかもしれません。

torasan117
質問者

お礼

回答ありがとうございます。 将来的にまだこの作業はあるみたいなので、プログラムを作りたいのですが、 ちょっとというか、全然手に負えません。 すいませんが、サンプル的なものでいいので教えてただけないでしょうか? お手数ですがよろしくお願いします。

関連するQ&A

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

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

  • Excelのセルをコピペして、Google検索をす

    ExcelのA列にキーワードが記入されています。  A列 1 東京 2 大阪 3 静岡 4 福岡 このA列の1~4を選択してコピペ。 コピペした1~4を↓という風に、Google検索したいです。 Google検索 東京(タブ1)|大阪(タブ2)|静岡(タブ3)|福岡(タブ4) 「Pasty」というGoogleChromeのエクステンションがあり、 それは、URLをコピペして、Google検索できるというものです。 Pastyのキーワード版で、同じようなことをしたいと思っています。 Excelのハイパーリンクで同じようなことができますが、 一つずつしかできませんし、いくつかやってると規制?で止まります。 A列にあるキーワードを効率良く、 タブで分けて、Google検索していきたいです。 Excelの式や機能、エクステンション、ツール・ソフトとかで、 Excelのセルをコピペして、Google検索をすることはできますでしょうか? できるとしたら、どのような方法がありますでしょうか? 教えていただけたら、嬉しいです。 Excel2016を使っています。 よろしくお願いいたします。

  • googleでサイトの登録を行ったが……。

    質問です。googleでサイトの登録を行いました。URLを記入し「URLの追加」をクリックしました。すると「ページが表示されました」のメッセージだけで、なんにも書かれてないページがでてきたのです。これは、すでにページが登録されたのか判断しかねることになり、皆さんはどうかと思って質問したわけです。実際にURLが登録したかどうかを確認するにはどうしたらいいですか?

  • Excelに記入されたURL先のトップページを確認

    ExcelにURLが記入されていて、そのURL先のトップページを確認する。 という作業があります。 これまでは、D列に並んだURL達を10個くらいコピペして、 エクステンションのPastyで、一気に開いて確認していました。 ですが、あまりに数が多くなってきましたし、 一気に開いていくと時間がかかるし、PCも重くなってきてしまいます。 そこで、もっとスムーズにトップページを確認する方法が知りたいです。 URLをクリックすると、簡易のサムネが出てきたり、 サイトを全て読み込まずに、トップページの上部だけを読み込むとか。 何か効率性を上げる方法・アイデアは、ありますでしょうか? みなさまのお知恵を拝借させてください。 Excel2016です。 よろしくお願いいたします。

  • GOOGLEブックマーク内のデッドリンクをチェックするには?

    IEのお気に入りが整理できなくて、 ほとんど役に立たなくなっていたので 最近、GOOGLEブックマークを使い始めました。 使いやすくて気に入っています。 一気にIEのお気に入りに登録されていたURLを GOOGLEブックマークにインポートしたのですが、 すでにリンクがつながっていないURLがたくさんあります。 デッドリンクを自動的にチェックしてくれる機能がないかと思って GOOGLEブックマークのヘルプを調べてみたのですが、 そういう機能はないようです。 IEのお気に入りだと下記のようなソフトで 一気にチェックできるのですが GOOGLEブックマークでデッドリンクを一気にチェックするような 方法はないのでしょうか? http://www.vector.co.jp/soft/win95/net/se265788.html

  • エクセルでホームページのフォームに自動登録するには?

    ホームページでレンタルの自動登録リンクを利用して、その中で 自分のお気に入りのリンク集を作っています。 ブラウザ上でフォームにタイトル・HPURL・紹介文を書いていくのですが同じような作業を数百回繰り返すので非常に効率が悪いです。 エクセルを利用して簡単に登録するようにできないでしょうか? 例えばAの列にフォームがあるページのURL、Bの列にタイトル、Cの列にHPURL、Dの列に紹介文を入れておけば自動で行数分だけ登録を続けてくれるようにしたいです。

  • Googleに登録させない方法をお教えください!

    現在、会員登録型のWEBサイトを作成しております。 トップページ以外は、googleに登録されないように したいと思っております。 自分で方法を調べてみたところ、以下の方法が 見つかりました。 ・サーバーのルートにrobots.txt というファイルを 配置する ・<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> というメタタグを用意する (参考URL) ↓↓ http://www.google.com/intl/ja/remove.html しかしながら、会員ページなどから 外部のブログURLなどが指定された場合、 そのURLがGoogleに登録されていると リファラーから当WEBサイトがGoogleに 見つかってしまい、登録されてしまうのでは ないかと考えております。 上記の状況、或いはその他の状況でも、 Googleに登録されない方法を ご存知でしたらお教え願います。。。 それでは、宜しくお願い致します。

  • googleのURL登録について

    googleに私の作ったHPを登録しようと、登録ページにURLとコメントを入れて登録を試みましたが、Not foundと英語のエラーメッセージが出てしまいます( p_q) もちろん そのURLは存在します。。 これは、私だけでしょうか?それともgoogleの問題なのでしょうか? 初歩的な質問ですみません<(_ _)> 分かる方がいらしゃいましたら、教えていただけると助かります。。 よろしくお願いします。

  • google infoseek へのホームページ登録及び、登録(審査)状況の確認について

    小さなネット通販の会社をしている者です。 自社のホームページを立ち上げ、googleとinfoseekへのページ登録申請を致しました。 申請から1ヶ月ほど経つのですが、まだgoogle・infoseek共、当社製品名で検索しても検索結果に反映されません。 登録時の特記事項としては以下のことを意識しております。 (1)登録申請をしたURLはFC2のアドレスです。 (2)YAHOOはページの登録に費用が掛かると聞いたので今回はgoogle・infoseekのみに登録申請しています。 (3)URL末尾がindex.htmlのものしか登録できないと聞いたので、その形を取っております。 (4)html上に<title>タグが抜けていることに気づいたので、昨日<title>タグを入れてアップし直しました。(<title>タグには当社製品名を入れております) 個人的には、(1)か(4)が原因しているのかと思っております。 【A】他に何か原因はありますでしょうか? 【B】googleやinfoseek上で、現在の登録申請状況の確認は出来ますでしょうか? 【C】同じURLで再度申請しても問題ないでしょうか? 【A】【B】【C】いずれかでも結構です。 どなたかご教授下さい。 P.S.この画面上に、具体的な製品名やURLを掲載してもよいか分かりませんでしたので、今回は掲載しておりません。 よろしくお願い致します。

  • Google検索をして、その下に検索結果(URL)

    A列1行から、ずっと右へキーワードが記入されています。 調べたいキーワードは、400近くあります。 その1行目にあるキーワードをGoogle検索をして、 検索結果のURLだけを、そのキーワードの下に表示させたいです。 検索結果は全部で10ページくらい、大体100個のURLになるかと思います。 (youtube動画や広告などは含めないです) このようなことは、Excelのマクロでできるでしょうか? できるとしたら、どのようなマクロの記述になるでしょうか? Excel2016です。 よろしくお願いいたします。

専門家に質問してみよう