URLからMSXML2.XMLHTTPを用いてHTMLソースの取得するマクロを現在作成しています。
取得部分のつくりは以下のようになっております。
(必要最低限の記載になっております。)
Dim buf As String
Set Http = CreateObject("MSXML2.XMLHTTP")
Http.Open "GET", URL, False
Http.Send
buf = StrConv(Http.responseBody, vbUnicode)
上のようなコードでURLを取得しているのですが、
特定のサイト(URL)で正しく取得されないことがあります。
正しく取得できているかいないかの比較はChromeの「ページのソースを表示」から
ダウンロードしたものと比較して判断しています。
大体のURLではきれいに一致しているのですが
一部まったく違う形で取得されてしまい困っています。
どのように違うか詳細を記載できず大変申し訳ございません。
ただ差異の内容としては全く取得できないのではなく、
bodyタグの中身が取得されていなかったり、そもそも最初の記述が
Chromeでは「<!DOCTYPE html>」などから始まっているのに対して
自分が作成してたマクロでは「<?xml version="1.0" encoding="shift_jis"?>」のように
取得されていて全く異なる形で取得されていました。
何か原因がわかる方はいますでしょうか。
Html4かHtml5かで違うか考えたのですがそうでもなさそうなので
何かわかる方がいましたらお願いいたします。
@追記 2019/10/7
どのような状況かわかりやすくするため実際のソースを一部情報を隠して記載します。
情報を隠すため「*」を入れとても分かりにくくなっているかと思われますがご了承ください。
・Chromeから取得したソース
→そのままです。Chromeからソースの表示で取得したものになります。
長いため色々と省略しています。
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head prefix="*****"> 4<meta charset="Shift_JIS"/> 5<meta http-equiv="***" content="IE=edge,chrome=1" /> 6<title>****</title> 7<meta name="***" content="***" /> 8<meta http-equiv="***" content="text/javascript" /> 9<link rel="***" href="***" /> 10~~~~~ 11<link rel="stylesheet" href="***" media="all" /> 12<script src="***.js"></script> 13~~~~~ 14<script src="***.js" charset="Shift_JIS"></script> 15</head> 16<body id="***" class="***"> 17<div class="***"> 18 <div class="***"> 19 20 <div class="***"> 21 <div class="***"> 22 <ol> 23 <li><a href="/">***</a></li> 24 <li><a href="***">***</a></li> 25 <li><a href="***">***</a></li> 26 <li><a href="***">***</a></li> 27 <li>***</li> 28 </ol> 29 </div> 30 </div> 31 32 <div class="***"> 33 <div class="***"> 34 <h1>***</h1> 35 </div> 36 </div> 37 38 ***省略*** 39 40 </div> 41 </div> 42</div> 43</div> 44<script type="text/javascript" src="***"></script> 45</body> 46</html> 47
・問題のソース
→今回作成したマクロで取得した物の中で問題のソースになります。
こっちのほうでは省略などはしてありません。これしか取得されないので困っています・・・
HTML
1<?xml version="1.0" encoding="shift_jis"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "***"> 3<html xmlns="***/xhtml" xml:lang="ja" lang="ja"> 4<head> 5<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> 6<meta http-equiv="***" content="IE=edge,chrome=1" /> 7<title>***</title> 8<meta http-equiv="***" content="0;URL=***/" /> 9<link rel="***" href="***" /> 10</head> 11<body> 12<script type="text/javascript" src="***"></script> 13</body> 14</html>
うまくいっているのものはWinMargeで比較しても綺麗に一致しているのですが
問題のものは全く違う形で取得されてしまいます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/07 05:33