Excel VBA从HTMLDocument中提取更多特定信息

时间:2014-05-06 17:40:14

标签: html excel vba excel-vba

我开始研究一个程序,基本上去特定的图像网站,获取信息,格式化,然后呈现它。一切正常,直到我开始在使用HTML 5而不是HTML 4的不同网站上处理相同的事情。

有问题的标签使用新的标签,如果有人可以告诉我如何使用getElementById从中获取信息,我会设置。否则这是我的问题。

由于它不支持HTML 5,我决定选择包含所有内容的主“DIV”标记,而不是更具体的标记。

Set htm = CreateObject("htmlFile")

With CreateObject("WinHttp.WinHttpRequest.5.1")
    .Open "GET", link, False
    .send
    htm.body.innerHTML = .responseText
End With

Dim sDD As HTMLDocument
Set sDD = htm.getElementById(Protocol)

Test = sDD.innerText
Test2 = sDD.innerHTML

MsgBox (TypeName(Test))
MsgBox (TypeName(Test2))
MsgBox (Test)
MsgBox (Test2)

在其他所有情况下,我很容易得到我需要的东西,它从“DIV”标签中获取所有内容,但这是我为了获得更具体的信息所做的一切。

Dim sDD As HTMLDocument
Set sDD = htm.getElementById(Protocol)

Test2 = sDD.innerHTML

Test3 = Test2.getElementsByTagName("UL")(2).innerText

由于它符合HTML原则这一事实显然不起作用,并且Test2没有这样设置。但是Test2包含来自整个DIV的HTML代码,所以我想知道的是..有没有办法从HTML代码中获取标签,或者有​​没有办法从'Section'标签去除信息?

编辑:

来自相关网站的一些源HTML。

  <section id="tag-list">
    <h2>Copyrights</h2>
    <ul>
      <li class="category-3">
        <a class="wiki-link" href="/wiki_pages/show_or_new?title=original">?</a> 
        <a class="search-tag" href="/posts?tags=original">original</a> 
        <span class="post-count">165k</span>
      </li>
    </ul>
    <h2>Artist</h2>
    <ul>
      <li class="category-1">
        <a class="wiki-link" href="/artists/show_or_new?name=tennouji_masamichi">?</a> 
        <a class="search-tag" href="/posts?tags=tennouji_masamichi">tennouji masamichi</a> 
        <span class="post-count">59</span>
      </li>
    </ul>
    <h1>Tags</h1>
    <ul>
       <li class="category-0"><a class="wiki-link" href="/wiki_pages/show_or_new?title=1girl">?</a> <a class="search-tag" href="/posts?tags=1girl">1girl</a><span class="post-count">1061k</span> </li>
       <li class="category-0"><a class="wiki-link" href="/wiki_pages/show_or_new?title=absurdres">?</a><a class="search-tag" href="/posts?tags=absurdres">absurdres</a> <span class="post-count">85k</span></li>

?竞技场(公司)128            ?蓝色头发163k            ?高443k            ?连体泳衣23k            ?红眼240k            ?短发437k            ?独唱909k            ?泳衣83k              

这就是我实际需要让程序工作的东西,它包含在从'DIV'标签中删除的HTML代码中。

注意:对于凌乱的源代码感到抱歉,这是网站编码格式错误的结果。

0 个答案:

没有答案