0

以下の a) または b) のいずれかを実行しようとしています。私がそれを理解できるなら、私はa)を好むでしょう。最後にhtmlを参照してください。

a) 次の項目の値を抽出します。"" 内の項目は静的ですが、関連する値は変更されます。値だけを抽出したい。

"locality" = Paris
"region" = Paris
"country-name" = France
"latitude" = 48.85534
"longitude" = 2.35048

b) 単純に要素全体を抽出する<div class="vcard">...<div>

他の誰かのコードを再利用して、自分のやりたいようにしようとしています。しかし、コードに頭を悩ませています。私はいくつかの値を抽出することができます。しかし、それは面倒です。私はコードをはるかに良くすることができると思います:

VBA

Sheet1.WebBrowser1.Navigate (Sheet1.Range("C1"))

Do
DoEvents
Loop Until Sheet1.WebBrowser1.ReadyState = READYSTATE_COMPLETE

the_html_code = Sheet1.WebBrowser1.Document.Body.InnerHTML

    the_output_row = 2
    start_of_item = InStr(the_html_code, "locality")
    the_value = Mid(the_html_code, start_of_item + 39, Len(the_html_code))
    the_html_code = Mid(the_html_code, start_of_item + 8, Len(the_html_code))
    the_value = Mid(the_value, 1, InStr(the_value, Chr(62)) - 1)
        Sheet1.Range("L" & the_output_row) = the_value

HTML

    <script>
        if (typeof (aadSponsoredLinksObj) != 'undefined' && aadSponsoredLinksObj.type == 'google' && aadSponsoredLinksObj.show_links == true) {
            document.write('<scr' + 'ipt src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></scr' + 'ipt>');
        } else if (typeof (aadSponsoredLinksObj) == 'undefined') {
            jQuery('#ad-links').remove();
        }
    </script>
<div id="tracking-pixels"></div>

</div>
<!-- /#wrap -->

    <div class="vcard">
        <span class="adr">
            <span class="locality">
                <span class="value-title" title="Paris" ></span>
            </span>
            <abbr class="region" title="Paris">
                <span class="value-title" title="75" ></span>
            </abbr>
            <abbr class="country-name" title="France">
                <span class="value-title" title="FR" ></span>
            </abbr>
        </span>
        <span class="geo">
            <span class="latitude">
                <span class="value-title" title="48.85534" ></span>
            </span>
            <span class="longitude">
                <span class="value-title" title="2.35048"></span>
            </span>
        </span>
    </div>

    <script type="text/javascript">
        var _qoptions = { qacct: 'p-4b4gl_1fWISuU' };
        if (typeof (apgPageInfoObj) != 'undefined' && apgPageInfoObj.crumb_trail) {
            _qoptions.labels = apgPageInfoObj.crumb_trail.join('.');
4

1 に答える 1

0

David Zemens が提案したように、MSXML で DOM パーサーを使用できます。VBA 参照ダイアログで、Microsoft XML への参照を追加できます (最新の v6.0 を使用することもできます)。このライブラリへのオンライン リファレンスがここにあります。

于 2013-07-24T22:44:23.383 に答える