【问题标题】:Excel VBA - Website ScrapeExcel VBA - 网站抓取
【发布时间】:2017-02-08 22:37:09
【问题描述】:

我花了好几个小时寻找这个问题的答案,但我找不到。

我正在尝试从这个website中提取数据

我已经设法获得了我需要的大部分内容,但我发现很难针对特定数据点。

我用过的最接近的一段代码是:

 hDoc.getElementsByClassName("table-matches__odds")(0).outerHTML

下面的输出不是我想要的

class=table-matches__odds data-odd-max="5.50" data-odd="5.19"

我只想要 data-odd= 这部分,所以 5.19 但不知道如何定位它。我可以使用 instr 从中提取我需要的数据,但有更具体的方法吗?

我要提取的部分的 html 如下所示:

<TH class=h-text-left colSpan=8><A href="about:/soccer/england/premier-league/">Premier League 2016/2017</A></TH></TR>
<TR data-dt="5,2,2017,17,00">
<TD>Leicester</TD>
<TD><STRONG>Manchester United</STRONG></TD>
<TD class=h-text-center>0:3</TD>
<TD class=table-matches__odds data-odd-max="5.50" data-odd="5.19"></TD>
<TD class=table-matches__odds data-odd-max="4.00" data-odd="3.79"></TD>
<TD class="table-matches__odds colored"><SPAN><SPAN><SPAN data-odd-max="1.80" data-odd="1.72"></SPAN></SPAN></SPAN></TD>
<TD><A href="about:/soccer/england/premier-league/leicester-manchester-united/G0fXjMCK/">details</A></TD>
<TD class=h-text-right>05.02.2017</TD></TR>
<TR data-dt="24,9,2016,13,30">
<TD><STRONG>Manchester United</STRONG></TD>
<TD>Leicester</TD>
<TD class=h-text-center>4:1</TD>
<TD class="table-matches__odds colored"><SPAN><SPAN><SPAN data-odd-max="1.73" data-odd="1.69"></SPAN></SPAN></SPAN></TD>
<TD class=table-matches__odds data-odd-max="4.05" data-odd="3.85"></TD>
<TD class=table-matches__odds data-odd-max="5.75" data-odd="5.34"></TD>
<TD><A href="about:/soccer/england/premier-league/manchester-united-leicester/dOBfynxf/">details</A></TD>
<TD class=h-text-right>24.09.2016</TD></TR>

任何帮助将不胜感激

谢谢

【问题讨论】:

    标签: html excel web-scraping vba


    【解决方案1】:

    你可以将它声明为一个字符串

    Dim sResult as String

    然后用这个推导出 5.19 的值:

    sResult = Mid(sResult, InStr(sResult, "data-odd=""") + Len("data-odd="""), 4) - 假设它始终是小数点后 2 位,并且它也存储为字符串而不是双精度

    出于兴趣,您是否正在尝试构建套利筛选器?

    【讨论】:

    • 嗨,杰里米 - 我打算尝试这种方法,它可能会成功。只是想知道是否有一种方法可以像使用标签和类等一样直接引用它。我正在构建一个足球预测模型,我将使用赔率来验证任何利润收益。感谢您的建议
    • @smdavies1983 我已经尝试构建一个刮板,但我的 htlm 目前还达不到标准,无法处理不同的页面布局等。你尝试过innerHTML 属性吗?我有点猜测,虽然不知道你的代码
    • 是的,我尝试了很多不同的东西——innertext、innerhtml。 Outerhtml 给了我最接近我需要的输出。页面上的其他数据很好,因为它们已经定义了类或标签。但是 data-odd 似乎没有以标准方式定义,实际上可能使用 javascrips 被注入到代码中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2018-11-21
    相关资源
    最近更新 更多