html - 尝试从网站获取一些数据

标签 html excel vba

我想从金融网站获取不同的价格并将它们存储在 Excel 文件中。 我没有很好的知识,我想知道我为从网站获取数据所做的代码是最好的还是可以做得更好。 网站 HTML 代码就是这个。我想在 'Prezzo di chiusura' 之后得到最后一个 td,它在 103,74 内。

我有这些问题:

  • 我使用了 get elementsbytagname("td")(39) ,我刚刚计算了页面中的 td 数,有没有更好的方法来处理那个 td ?
  • 我注意到有时我有以前的价格而不是我在网页上看到的价格,我用我的代码访问了一个与我在网页上看到的不同的区域数据,直到它没有更新我会看到只有以前的数据?

HTML代码是:

<div class="instruments_company_summary">
  <table class="table-noborders">
    <tr>
      <td class="table_label"> </td>
      <td>
        <div class="floatdx" style="padding-bottom:10px">
          <div class="floatsx">
            <div class="standard-button">
              <a href="/it/strumenti/grafico/IT0004785355">Grafico</a>            </div>
          </div>
                      <div class="floatsx">
              <div class="standard-button">
                <a href="http://www.eurotlx.com/product-details/IT0004785355.pdf" target="_blank">Scheda</a>              </div>
            </div>
                              <div class="floatsx">
            <div class="standard-button">
              <a href="/it/strumenti/dettaglio/csv/IT0004785355">Scarica book</a>            </div>
          </div>
        </div>
      </td>
    </tr>
    <tr>
      <td class="table_label">Isin</td>
      <td>
        <div class="floatsx" style="padding-top:4px;">IT0004785355</div>
      </td>
    </tr>
    <tr>
      <td class="table_label">Descrizione</td>
      <td>Bpvi 7% 29dc16</td>
    </tr>
    <tr>
      <td class="table_label">Prezzi aggiornati al</td>
      <td>09-11-2015 21:28:48</td>
    </tr>
  </table>

  <table>
    <tr>
      <th colspan="2">Book di negoziazione</th>
    </tr>
    <tr>
      <td class="table_label">Var</td>
      <td>0,05%</td>
    </tr>
    <tr>
      <td class="table_label" style="border:0">Book a 5 livelli</td>
      <td style="border:0; padding: 10px 0 5px">
        <table>
          <thead>
          <tr>
            <th>Q.tà Acquisto</th>
            <th>Prezzo Acquisto</th>
            <th>Prezzo Vendita</th>
            <th>Q.tà Vendita</th>
          </tr>
          </thead>
          <tbody>
                        <tr>
              <td>-</td>
              <td>-</td>
              <td>-</td>
              <td>-</td>
            </tr>
                        <tr>
              <td>-</td>
              <td>-</td>
              <td>-</td>
              <td>-</td>
            </tr>
                        <tr>
              <td>-</td>
              <td>-</td>
              <td>-</td>
              <td>-</td>
            </tr>
                        <tr>
              <td>-</td>
              <td>-</td>
              <td>-</td>
              <td>-</td>
            </tr>
                        <tr>
              <td>-</td>
              <td>-</td>
              <td>-</td>
              <td>-</td>
            </tr>
                      </tbody>
        </table>
      </td>
    </tr>
  </table>

  <table>
    <tr>
      <th colspan="2">Dati ultimo contratto</th>
    </tr>
    <tr>
      <td class="table_label">Prezzo</td>
      <td>103,93</td>
    </tr>
    <tr>
      <td class="table_label">Quantità</td>
      <td>5.000</td>
    </tr>
    <tr>
      <td class="table_label">Data e ora</td>
      <td>09-11-2015 16:59:33</td>
    </tr>
  </table>

  <table>
    <tr>
      <th colspan="2">Dati giornalieri</th>
    </tr>
    <tr>
      <td class="table_label">Prezzo di chiusura</td>
      <td>103,74</td>
    </tr>

Excel VBA 代码是这样的:

Dim W As Worksheet: Set W = ActiveSheet
Dim Objie As Object
Dim xObj

Set Objie = CreateObject("InternetExplorer.Application")
Objie.Visible = False

Objie.Navigate "http://www.eurotlx.com/it/strumenti/dettaglio/IT0004785355"

While (Objie.Busy Or Objie.ReadyState <> 4)
    DoEvents
Wend

Set xObj = Objie.Document.getElementsByTagName("td")(39)

W.Range("I3" ) = xObj.innerText

Set xObj = Nothing
Objie.Quit
Set Objie = Nothing

最佳答案

这样会更好(避免更改之前表格中的行数)

Dim tbl, xObj

Set tbl = Objie.Document.getElementsByTagName("table")(3) '4th table on page
Set xObj = tbl.getElementsByTagName("td")(2)              'second td in that table

关于html - 尝试从网站获取一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33618537/

相关文章:

html - HTML视频标签可用于grails吗?

mysql - 检查 MySQL 表中的外部列表是否有重复项?

excel - 使用 vba 连接多个范围

vba - 在循环中使用 From Web Query

excel - 如何让我的各个模块协同工作?

html - 将放置在其他元素之后的 SPAN 扩展到其容器的右边界

html - 当前菜单颜色 CSS 导航

javascript - 使用淡入/淡出和向上滚动菜单

excel - 从网页中抓取表格

Python Excel 列数组变量