Я не разработчик и не обладаю очень ограниченными знаниями XML, но за то, что узнал за последние 3-4 дня, исследуя в Интернете. Поэтому заранее извиняюсь за базовый уровень этого вопроса. Я пытаюсь завершить эту одноразовую задачу.Извлечение атрибута XML с помощью VBA
У меня есть знание VBA Excel, и в настоящее время я пытаюсь использовать VBA для извлечения атрибута кода SIC на странице данной компании на веб-сайте регистрации SEC. В качестве примера, это сайт для Walmart
В синей строке в верхней части можно увидеть «SIC: 5331» это 5331 я пытаюсь вернуться к переменной VBA, так что я могу заполнить таблицу. Когда я правая кнопка мыши в IE и клише View Source часть страницы, которая имеет отношение читает в XML как:
<div id="contentDiv">
<!-- START FILER DIV -->
<div style="margin: 15px 0 10px 0; padding: 3px; overflow: hidden; background-color: #BCD6F8;">
<div class="mailer">Mailing Address
<span class="mailerAddress">702 SOUTHWEST 8TH STREET</span>
<span class="mailerAddress"> BENTONVILLE AR 72716 </span>
</div>
<div class="mailer">Business Address
<span class="mailerAddress">702 SOUTHWEST 8TH ST</span>
<span class="mailerAddress">BENTONVILLE AR 72716 </span>
<span class="mailerAddress">5012734000</span>
</div>
<div class="companyInfo">
<span class="companyName">WAL MART STORES INC <acronym title="Central Index Key">CIK</acronym>#: <a href="/cgi-bin/browse-edgar?action=getcompany&CIK=0000104169&owner=exclude&count=40">0000104169 (see all company filings)</a></span>
<p class="identInfo"><acronym title="Standard Industrial Code">SIC</acronym>: <a href="/cgi-bin/browse-edgar?action=getcompany&SIC=5331&owner=exclude&count=40">5331</a> - RETAIL-VARIETY STORES<br />State location: <a href="/cgi-bin/browse-edgar?action=getcompany&State=AR&owner=exclude&count=40">AR</a> | State of Inc.: <strong>DE</strong> | Fiscal Year End: 0131<br />(Assistant Director Office: 2)<br />Get <a href="/cgi-bin/own-disp?action=getissuer&CIK=0000104169"><b>insider transactions</b></a> for this <b> issuer</b>.
<br />Get <a href="/cgi-bin/own-disp?action=getowner&CIK=0000104169"><b>insider transactions</b></a> for this <b>reporting owner</b>.
</p>
</div>
</div>
</div>
Пытаясь понять, как VBA может быть использован для извлечения SIC, я обнаружил следующее сообщение на ваш сайт:
Query and parse xml attribute value into XLS using VBA
Я попытался применить ответ barrowc путем копирования/вставки в модуль Excel и вставить путь к опилками Wal Mart, однако, когда я пошагово я получаю Debug.Print «*** ** «но я ничего не получаю для n.Text.
Sub test4()
Dim d As MSXML2.DOMDocument60
Dim i As IXMLDOMNodeList
Dim n As IXMLDOMNode
Set d = New MSXML2.DOMDocument60
d.async = False
d.Load ("http://www.sec.gov/cgi-bin/browse-edgar?company=&match=&CIK=886475&filenum=&State=&Country=&SIC=&owner=exclude&Find=Find+Companies&action=getcompany")
Debug.Print "*****"
Set i = d.SelectNodes("//div[@id='contentDiv']")
For Each n In i
Debug.Print n.Text
Next n
Debug.Print "*****"
Set d = Nothing
End Sub
Я пробовал различные строки в d.SelectNodes()
, но я не знаю достаточно об этой теме, чтобы понять, где я буду неправильно не знаю. Таким образом, комментарий к моему синтаксису или указатель на ресурс был бы чрезвычайно полезен.
Я бы сказал, сделайте некоторые исследования в [селекторах xpath] (https://developer.mozilla.org/en-US/docs/XPath), чтобы узнать, как правильно выбирать узлы. Тогда, по крайней мере, у вас будет лучшее понимание того, что вам нужно выбрать. Я лично выбрал бы узел «acronym», а затем выберет второй его родной брат. Хотя у вас могут быть проблемы, потому что это HTML и не представляется допустимым xml. Возможно, вам повезло, что он разбирает его как строку вместо XML. Особенно, если структура не изменится. –
Вам нужна только SIC с этой страницы, или вы используете это в качестве примера типа данных, которые необходимо извлечь в общем случае? – mwolfe02
Мне нужно только код SIC с этой страницы, а затем повторится для других корпусов. Я создал список в Excel фирм и также вытащил их номер CIK из индексных файлов SEC. Мое намерение состоит в том, чтобы создать цикл, который принимает этот веб-адрес в sub и итеративно заменяет номер CIK, вызывает веб-страницу, вытаскивает SIC с полученной веб-страницы, затем вставляет следующий CIK и т. Д. – mchac