【问题标题】:Scraping HTML by Class in VBA在 VBA 中按类抓取 HTML
【发布时间】:2016-05-19 17:09:16
【问题描述】:

我有一个如图所示的html代码

<div class="property-title visible-xs">
                                        <a href="/property/473902/Office-Lot">
                                            <h2><b> 2nd Floor, Block D5, Solaris Dutamas, No. 1, Jalan Dutamas 1, 50480, Kuala Lumpur</b></h2>
                                        </a>
                                    </div>
                                    <p style="color: #0071ee;">Office Lot</p>
                                    <h4><b>RM 880,000</b></h4>
                                    <div>
                                        <table>
                                        <!-- <tr><td>Office Lot</td></tr> -->
                                            <tr>
                                                <td>Property Code</td><td>:</td><td>PB473902</td>
                                            </tr>
                                                                                            <tr>
                                                    <td>Auction Date</td><td>:</td><td>2016-02-26</td>
                                                </tr>
                                                                                        <tr>
                                                <td>Built up  </td><td>:</td><td>754 sq.ft  </td>
                                            </tr>
                                                                                            <tr>
                                                    <td>Tenure</td><td>:</td><td>Freehold</td>
                                                </tr>

我使用以下代码提取了详细信息“2nd Floor, Block D5,....”

objIE1.Document.getElementsByClassName("property-title visible-xs").getElementsByTagName ("a")

但它似乎没有得到我需要的结果。请帮忙。

显示的 html 代码有多种形式。

【问题讨论】:

  • 尝试将(0) 添加到代码行的末尾,例如objIE1.Document.getElementsByClassName("property-title visible-xs").getElementsByTagName ("a")(0) 所以它需要元素集合中的第一个“a”元素。
  • 您好我尝试如下: extract1 = objIE1.Document.getElementsByClassName("property-title visible-xs").getElementsByTagName("a")(0) Cells(1, 1).Value = extract1 但它得到一个错误 438 指出该对象不支持此属性或方法
  • 以下答案是否解决了问题?

标签: html excel web-scraping getelementsbyclassname vba


【解决方案1】:

这将起作用:

extract1 = objIE1.Document.getElementsByClassName("property-title visible-xs")(0).getElementsByTagName ("a")(0).innerText
Cells(1,1).Value = extract1

当一个函数有 getElementsBy(复数 - “元素”),例如 getElementsByClassNamegetElementsByTagName 时,代码将提取一组元素,因此您需要指定您想要的元素,在这种情况下,它是html 中的第一个是 0。当函数使用 getElementBy(单数 - “元素”)例如 getElementById 时,这会提取单个元素,因此不需要索引规范,因为没有集合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多