- ベストアンサー
MSXML2を使用してサイトのタイトルを取得する方法
- MSXML2を使用してサイトのタイトルを取得する方法について教えてください。
- InternetExplorerを使用した方法ではなく、MSXML2を使用してサイトのタイトルを取得する方法が知りたいです。
- 具体的なコードも教えていただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 まず、ご承知とは思いますが一応、 XMLHTTPでもWinHttpRequestでも、 直接的に「サイトのタイトルを取得」する方法はないので、 「MSXML2で」ということだと「可能でしょうか?」、noです。 htmlソースをMSHTML.HTMLDocumentに放り込んでからgetElementsで取得する、 なんて筋書き等も、試してはみましたが、私の方では、うまく行かなかったです。 出来るのかも知れないけれど、結構手数が多そうな予感もあり、悩んだ末、 ベタでシンプルな形で文字列を抜き出してみました。 これで万全、とは言えないのかも知れませんが、 <head><title></title></head>という絶対的な属性を扱う分には、 案外まっとうなやり口のような気がしています。 検証に少しは時間かけた方が良さそうですけれど、 身の回りのWebページ達については、一応「サイトのタイトルを取得」出来ていました。 あまりにもベタな方法なので、ふざけて見えるかも知れませんが、 日常的に、htmlソースからの抜出しには、 InStr()関数やRegExpを真面目に使うことも多いです。 RegExpで書いた方が見栄えは良くなるとは思いますし、 IgnoreCase = True を指定した方が、堅実な漢字はしますが、 シンプルな方がいいかな?と。 もし、お望みと違う内容になっていましたらすみません。 XMLHTTPは殆ど使ったことないので、WinHttpRequestで書いていますが、 記述内容としては共通なので、できれば参照設定してから試してみて下さい。 (または後半の「<Title>取得」の部分だけ、そちらに書き加えるなど、、、。) (タグが見つからない場合?の、エラー処理は省いています。) **************************************************** ' ' 参照設定[Microsoft WinHTTP Services, version 5.1] / WinHttp Sub Re8982750w() ' WinHttpRequest 版 ' ' htmlソース取得 Dim oWinReq As WinHttp.WinHttpRequest Dim myAll As Variant Set oWinReq = New WinHttp.WinHttpRequest ' Set oWinReq = CreateObject("WinHttp.WinHttpRequest.5.1") oWinReq.Open "GET", "http://www.yahoo.co.jp/", False oWinReq.Send myAll = oWinReq.responseText ' htmlソースを抜き出す oWinReq.abort Set oWinReq = Nothing ' ' <Title>取得 Dim nPosEndTag As Long Dim nPosStartTag As Long nPosEndTag = InStr(1, myAll, "</head>", vbTextCompare) nPosEndTag = InStrRev(myAll, "</title>", nPosEndTag, vbTextCompare) nPosStartTag = InStrRev(myAll, "<title>", nPosEndTag, vbTextCompare) Debug.Print "■"; Mid$(myAll, nPosStartTag + 7, nPosEndTag - nPosStartTag - 7); "■" End Sub ****************************************************
お礼
ありがとうございました。